Почему 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
делает трюк.