Почему W3C советует обертывать входные элементы в <p> теги?

Я видел много примеров в Интернете, где формы выкладываются так:

<form>
    <p><input></p>
</form>

К моему удивлению, это также описано в спецификации:

Любая форма начинается с элемента формы, внутри которого находятся элементы управления. Большинство элементов управления представлены входным элементом, который по умолчанию предоставляет однострочное текстовое поле. Чтобы пометить элемент управления, используется элемент метки; текст ярлыка и сам элемент управления входят в элемент метки. Каждая часть формы считается абзацем и обычно отделена от других частей с помощью p элементов. Объединяя это, вот как можно запросить имя клиента:

Хотя этот раздел ненормативный, мне все же кажется, что это плохая практика, а не семантическая. Я полагаю, что цель состоит в том, чтобы вводить входные данные в их собственную линию, но не нужно контролировать отображение этих элементов с помощью CSS?

Есть ли причина, по которой W3C советует, чтобы формы были изложены таким образом? Я что-то упускаю?

Ответ 1

Если вы пишете форму значимым (читаемым: семантическим) способом, вам нужно, чтобы поток текста приводил к элементу:

<form>
 <p><label for="firstName">Please enter your first name:</label><input id="firstName" type="text" /></p>
</form>

Еще лучший способ - обработать вашу форму, как скрипт mad-libs:

<form>
  <p>Hello. My <label for="firstName">name</label> is <input id="firstName" type="text" />...</p>
</form>

Элемент p не является единственным способом разметки формы. Если матрица данных добавляется/редактируется, она семантически действительна для использования таблицы.

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

Ответ 2

Элементы INPUT являются встроенными, поэтому имеет смысл обернуть их каким-то блочным элементом, так что между ними существует естественное разделение. Поскольку DIV по умолчанию не имеет полей, разве нет смысла использовать абзац?

Ответ 3

Ни одна из основных фреймворков css/html/grid не использует теги P

см. здесь бутстрап или фундамент

imho использовать fieldset и divs.

в то время как w3c рекомендует использовать теги абзацев <p> нет никакого смысла следовать их советам. Причина в том, что вы ограничиваете себя. То есть: если вы пишете свои компоненты с помощью p тэгов, вы не сможете разместить div внутри него. Ввод <div> внутри <p> добавляет дополнительную <p>

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

Ответ:

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

Предполагается, что вы знаете, что вам нужно, скажем, через год.

мой совет: вы не хотите быть похожим

"Мне жаль, что я не использовал ограничительные теги P "

Ответ 4

Это касается HTML 4, возможно, не для запрошенного HTML 5.

http://www.w3.org/TR/html401/interact/forms.html#edef-FORM

form требуется элемент уровня блока как дочерний. input является встроенным элементом. p делает трюк.