Кажется, что (строгий) HTML не позволяет вложению невстроенных элементов внутри a <p>
, но затем как я, как предполагается, представляю абзац, который содержит список (что-то, что часто происходит в естественных текстах). Я видел три ответа, что все кажутся неудовлетворяющими:
<p>
блоки, которые являются частями абзацев, и это кажется плохим для разметки, которая пытается для перемещения в более семантическое направление.<div class="mypara">
— который похож на плохой способ обойти все это и разочароваться в использовании разметки с надлежащей семантикой для текста.Там некоторый другой путь состоит в том, чтобы сделать это, которое семантически корректно и допустимо?
Абзацы в HTML 5, по состоянию на последний рабочий проект, определяются как элементы потока, которые могут содержать только элементы фразировки. Списки также определяются как элементы потока и не могут быть заключены в абзацы. Каким бы вы ни думали, что определение абзаца должно быть, это формальное определение термина в HTML, и я думаю, что оно вряд ли изменится.
Есть две возможности, которые вы могли бы рассмотреть помимо двух, которые вы упомянули:
section
, nav
, header
, footer
или article
. p – ol – p
выбранной последовательностью div
, которая применяет общее форматирование к набору. Что касается div
, спецификация HTML 5 явно рекомендует, чтобы он был элементом «последнего средства», потому что он не несет семантического значения, как это делают другие элементы HTML, и может быть не таким удобным для пользователя в альтернативных пользовательских агентах. Согласно этому совету, я бы не стал использовать div
за счет p
для основного текста, если семантика важна для вас. Тем не менее, это может быть полезно для обеспечения того, чтобы использование нескольких абзацев не стало слишком визуально прерывистым.
Я не думаю, что тег html предназначен для управления идиомами фактических стилей письма. Это просто способ отобразить кусок текста в упорядоченном виде. Я не думаю, что он предназначен для имитации печатных материалов. Для этого вам придется использовать Div.
Есть ли во всем этом причина визуального стиля? Другими словами, когда у вас есть что-то вроде следующего, визуальный рендеринг вы не находите идеальным?
<p>Some paragraph text.</p>
<ul>
<li>First list item</li>
<li>Second list item</li>
<li>Third list item</li>
</ul>
<p>Another paragraph.</p>
Если проблема заключается в слишком большом запасе после P и перед UL, вы можете попробовать соседнего брата или сестру. селектор, подобный этому, для компенсации:
p + ul { margin-top: -1em; }
Я полагаю, это зависит от того, что вы считаете «абзацем». Для меня очевидно, что разработчики HTML никоим образом не считают список частью абзаца. И хотя я думаю, что можно привести аргумент в пользу любой интерпретации, я считаю, что спецификация верна.
Несмотря на то, что список не является разрывом в мышлении, он, безусловно, представляет собой изменение голоса или способа мышления, которые, как я считаю, заслуживают нового семантического контейнера.
Точно так же абзац представляет собой логический раздел в тексте. Список представляет собой последовательность логических разделов, и хотя можно представить, что один логический раздел может быть затем разделен на несколько разделов, имеет смысл просто создать новый раздел (особенно для такого большого перерыва в голосе / методе).
Семантика может быть в значительной степени субъективной. И это нормально. Однако в данном случае я считаю, что спецификация HTML правильно представляет семантику.
Ответ на ваш вопрос, очевидно, отрицательный, потому что спецификации говорят, что вы не можете этого сделать. Как и вы, мне нравится поддерживать семантику, поэтому я обычно иду с вашим 2-м вариантом (абзац, список, другой абзац). Тем не менее, я не могу придумать ни одного текста, где список на самом деле не нарушал бы поток текста, поэтому кажется, что начало нового абзаца после списка не может повредить.