Почему <form> является блочным элементом? - программирование

Почему <form> является блочным элементом?

Цель элемента <form>, IMO, является семантической, а не презентационной - элемент должен определить область с элементами, которые могут быть отправлены на сервер.

Почему же тогда браузер (и, я полагаю, в спецификации) задает display: block в таблице стилей пользовательского агента? Конечно, если вы хотите, чтобы форма была блоком, вы можете просто обернуть ее в элемент div?

Обычно я просто помещаю форму {display: inline} в свой css, чтобы переопределить это. Тем не менее, мне интересно, была ли хорошая причина для отображения <form> в виде блока по умолчанию или если он был сохранен таким образом по причинам, связанным с наследием.

4b9b3361

Ответ 1

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

Я полностью согласен с вашей точкой в ​​отношении <form>, не являющейся презентационной, но в то же время для меня имеет смысл, что это будет элемент блока, учитывая, как обычно используется этот тег.

Ответ 2

HTML 3.2 определяет элемент <FORM> как элемент уровня блока. Текущее поведение браузеров в отношении этого элемента, безусловно, для обратной совместимости.

Ответ 3

A <form> означает семантический и презентационный. Он носит смысловой характер, но также запрещен встраивать одну форму в другую, подразумевая, что он предназначен для определенного контейнера для всего его содержимого (элементы управления формой и другое содержимое блока/встроенного контента). Кроме того, встроенные узлы не могут содержать узлы уровня блока, по крайней мере, не по спецификации, которые по умолчанию ограничивали бы тег <form>.