Вложенное множество перечисляет в абзацах в HTML

Кажется, что (строгий) HTML не позволяет вложению невстроенных элементов внутри a <p>, но затем как я, как предполагается, представляю абзац, который содержит список (что-то, что часто происходит в естественных текстах). Я видел три ответа, что все кажутся неудовлетворяющими:

  • Списков не должно происходить в абзацах. (Я не собираюсь входить в культурные дебаты, но я, конечно, надеюсь, что HTML не собирается становиться местом для диктовки стиля записи.)
  • Разделите текст на абзац, затем список и затем второй абзац с посттекстом. Это выглядит плохо, потому что теперь я имею <p> блоки, которые являются частями абзацев, и это кажется плохим для разметки, которая пытается для перемещения в более семантическое направление.
  • Поддельные абзацы с помощью некоторых <div class="mypara"> — который похож на плохой способ обойти все это и разочароваться в использовании разметки с надлежащей семантикой для текста.

Там некоторый другой путь состоит в том, чтобы сделать это, которое семантически корректно и допустимо?

10
задан Zee 7 July 2010 в 01:38
поделиться

5 ответов

Абзацы в HTML 5, по состоянию на последний рабочий проект, определяются как элементы потока, которые могут содержать только элементы фразировки. Списки также определяются как элементы потока и не могут быть заключены в абзацы. Каким бы вы ни думали, что определение абзаца должно быть, это формальное определение термина в HTML, и я думаю, что оно вряд ли изменится.

Есть две возможности, которые вы могли бы рассмотреть помимо двух, которые вы упомянули:

  • Подумайте о том, чтобы достичь более широкого-достижение элемента потока, чем абзаца, если он применяется, например ,section, nav, header, footer или article.
  • Используйте гибридный подход: оберните последовательность p – ol – p выбранной последовательностью div, которая применяет общее форматирование к набору.

Что касается div, спецификация HTML 5 явно рекомендует, чтобы он был элементом «последнего средства», потому что он не несет семантического значения, как это делают другие элементы HTML, и может быть не таким удобным для пользователя в альтернативных пользовательских агентах. Согласно этому совету, я бы не стал использовать div за счет p для основного текста, если семантика важна для вас. Тем не менее, это может быть полезно для обеспечения того, чтобы использование нескольких абзацев не стало слишком визуально прерывистым.

9
ответ дан 3 December 2019 в 21:57
поделиться

Я не думаю, что тег html

предназначен для управления идиомами фактических стилей письма. Это просто способ отобразить кусок текста в упорядоченном виде. Я не думаю, что он предназначен для имитации печатных материалов. Для этого вам придется использовать Div.

3
ответ дан 3 December 2019 в 21:57
поделиться

Есть ли во всем этом причина визуального стиля? Другими словами, когда у вас есть что-то вроде следующего, визуальный рендеринг вы не находите идеальным?

<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; }
3
ответ дан 3 December 2019 в 21:57
поделиться

Я полагаю, это зависит от того, что вы считаете «абзацем». Для меня очевидно, что разработчики HTML никоим образом не считают список частью абзаца. И хотя я думаю, что можно привести аргумент в пользу любой интерпретации, я считаю, что спецификация верна.

Несмотря на то, что список не является разрывом в мышлении, он, безусловно, представляет собой изменение голоса или способа мышления, которые, как я считаю, заслуживают нового семантического контейнера.

Точно так же абзац представляет собой логический раздел в тексте. Список представляет собой последовательность логических разделов, и хотя можно представить, что один логический раздел может быть затем разделен на несколько разделов, имеет смысл просто создать новый раздел (особенно для такого большого перерыва в голосе / методе).

Семантика может быть в значительной степени субъективной. И это нормально. Однако в данном случае я считаю, что спецификация HTML правильно представляет семантику.

1
ответ дан 3 December 2019 в 21:57
поделиться

Ответ на ваш вопрос, очевидно, отрицательный, потому что спецификации говорят, что вы не можете этого сделать. Как и вы, мне нравится поддерживать семантику, поэтому я обычно иду с вашим 2-м вариантом (абзац, список, другой абзац). Тем не менее, я не могу придумать ни одного текста, где список на самом деле не нарушал бы поток текста, поэтому кажется, что начало нового абзаца после списка не может повредить.

0
ответ дан 3 December 2019 в 21:57
поделиться
Другие вопросы по тегам:

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