Для <p> или нет для <p>?

16

Недавно я провел дискуссию с коллегой, который утверждал, что <div>тег должен использоваться поверх <p>тега при форматировании абзацев.

Дело против использования <p>заключается в том, что он создает нерегулярный интервал между браузерами и, вероятно, станет устаревшим, как <b>тег.

Является ли это мнение <p>тега общим для сообщества?

BradB
источник
5
Просто чтобы указать, <b><i>в этом отношении) далеко не устарели. Проверьте спецификацию HTML5.
Рассерженная шлюха
Хороший вопрос - я только что проверил, меня всегда проинструктировали, что <b> и <i> являются устаревшими тегами и должны использоваться <strong> и <em>.
BradB
<strong>и <em>всегда следует использовать для акцента. <b>и <i>в этом отношении устарели, но они имеют законное, хотя и ограниченное, использование в HTML5.
Рассерженная шлюха
Это обсуждение действительно здесь? Мне кажется, что это должно быть на Doctype
Чарльз Boyung
@Charles - это серая область на данный момент, так как сайт все еще находится в зачаточном состоянии. Если вы чувствуете себя сильно, не стесняйтесь начать новое обсуждение на meta.webmasters.stackexchange.com - или оставьте свои комментарии здесь: meta.webmasters.stackexchange.com/questions/117/…
Марк Хендерсон,

Ответы:

41

divs и ps для совершенно разных целей. pдля абзацев, divдля секционных делений. Один для форматирования текста, другой для структуры страницы. Семантически некорректно использовать divвместо p.

И причина, по которой bэто не рекомендуется, заключается в том, что это тег представления. Это не имеет смыслового значения. Оба pи divимеют свои уникальные смысловые значения. pникогда не устареет, пока люди все еще форматируют текст в абзацы.

Ваш коллега, похоже, не знаком с принципом разделения контента и представления . В противном случае он знал бы, почему bэто отвратительно, и что такие проблемы с представлением, как интервал между текстом, должны быть определены в CSS, а не в вашем HTML.

Lèse Majesté
источник
11
+1 Согласен. Просто чтобы подчеркнуть ... любые «нерегулярные интервалы во всех браузерах» (хотя это спорно) можно управлять полностью CSS.
MrWhite
4
Да ... p { margin: 1em 0 }делает весь этот вопрос спорным.
Рассерженная шлюха
7
<b>имеет теперь семантическое значение: «Элемент b представляет собой область текста, на которую обращается внимание в утилитарных целях, без передачи какой-либо дополнительной важности и без использования альтернативного голоса или настроения, таких как ключевые слова в аннотации документа, названия продуктов в обзоре, полезные слова в интерактивном текстовом программном обеспечении или статья ". ( источник )
Дэвид Мердок
13

<p>и <div>не предназначены для той же цели, так как имеют другое семантическое значение:

  • <p> для абзаца,
  • <div>"предложить общий механизм для добавления структуры к документам", как указано в спецификации HTML div от W3C

<p> возможно, не рекомендуется в будущем, поскольку он все еще присутствует в XHTML и HTML 5.

Оба тега имеют различную графическую визуализацию. A <p>имеет верхнее и нижнее поле 1em, тогда как у a <div>вообще нет поля. Но этот момент вторичен, так как он может быть переопределен CSS.

Также обратите внимание на это различие: хотя оба тега имеют тип «блок», они <div>могут содержать только другие элементы блока. Таким образом:

  • <p><p> bla </p></p> неправильно, в то время как
  • <div><div> bla </div></div> в порядке

Важно помнить, что оба являются действительными и используемыми тегами, но не для одной цели.

Матье ФОР
источник