Задать вопрос
DenVdmj
@DenVdmj
Javascript, Perl, Lua, etc.

Как избежать нарушения семантичности верстки когда параграф не может включать код или списки?

В реальных текстах списки, преформатированный код часто встречаются не то что в середине параграфа, но даже в посреди предложения. Например:
<p>Такой пример: <pre>alert("Привет, мир!")</pre> выводит окно с приветствием</p>

Но в html невозможно разместить элемент уровня блока внутри <p>. Как обойти эту проблему? Делать так нельзя:
<p>Такой пример:</p> <pre>alert("Привет, мир!")</pre> <p>выводит окно с приветствием</p>

так как стили могут определять отступ text-indent для параграфа.
Хочется узнать: как верстальщики обходят эту проблему?
  • Вопрос задан
  • 329 просмотров
Подписаться 1 Оценить 3 комментария
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Почему это невозможно? Что мешает?
Вот парочка примеров: jsfiddle.net/IonDen/ur4f5gk2 и никаких проблем.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
< pre > - блочный элемент для достаточно большого объёма текста, а не для 3 слов кода. В вашем примере нужно использовать строчный < code > вместо него. Также, возможно, < cite > - в зависимости от ситуации.
Ответ написан
DenVdmj
@DenVdmj Автор вопроса
Javascript, Perl, Lua, etc.
Вариант со стилем для span замечательный, но он не решает проблему со списками.
Мой же пример браузер автоматически приводит к виду:
<p>Такой пример: </p><pre>alert("Привет, мир!")</pre> выводит окно с приветствием

jsfiddle.net/ur4f5gk2/1
Общая проблема в том, что <p> не может содержать блочные элементы.

Конечно можно задавать блочные стили для code, но тогда уж проще использовать вместо <p> тег <div> с классом .p, это решит и другие проблемы с остальными блочными элементами: ul, ol, pre. Но это костыль, и неиспользование родного тега для параграфа не самый лучший выход. Вот только, по всей видимости другого варианта нет.

PS. Обсуждение этой же проблемы на stackoverflow: stackoverflow.com/questions/10601345/ul-element-ca...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы