19

元素 IMO的目的<form>是语义而不是表示 - 元素在那里定义一个区域,其中包含可以发送到服务器的元素。

那么,为什么浏览器(并且,我在规范中假设)会在用户代理样式表中指定 display:block 呢?当然,如果你想让表单成为一个块,你可以把它包装在一个 div 元素中?

通常,我只是将表单 { display: inline } 放入我的 css 以覆盖它。不过,我想知道是否有充分的理由将<form>显示默认设置为块,或者是否出于遗留原因而保持这种方式。

4

3 回答 3

18

我认为这是因为 a<form>将经常包含其他块级元素(用于结构的 div,或者尽管我对此感到畏缩,但表格可以帮助组织表单字段等)。并且有一个包含块元素的内联元素,虽然完全有可能,但在语义上是有问题的。

我完全同意你关于<form>不具表现力的观点,但同时考虑到标签的一般使用方式,这对我来说是一个块元素是有道理的。

于 2012-09-18T04:49:18.877 回答
2

HTML 3.2<FORM>元素定义为块级元素。浏览器当前关于这个元素的行为肯定是为了向后兼容。

于 2012-09-18T04:50:36.893 回答
1

A<form>意味着语义和表象。它本质上是语义的,但也禁止将一个表单嵌入到另一个表单中,这意味着它是其所有内容(表单控件和其他块/内联内容)的明确容器。此外,内联节点不能包含块级节点,至少不是按照规范,<form>默认情况下会限制标签。

于 2012-09-18T04:51:24.130 回答