元素 IMO的目的<form>
是语义而不是表示 - 元素在那里定义一个区域,其中包含可以发送到服务器的元素。
那么,为什么浏览器(并且,我在规范中假设)会在用户代理样式表中指定 display:block 呢?当然,如果你想让表单成为一个块,你可以把它包装在一个 div 元素中?
通常,我只是将表单 { display: inline } 放入我的 css 以覆盖它。不过,我想知道是否有充分的理由将<form>
显示默认设置为块,或者是否出于遗留原因而保持这种方式。
我认为这是因为 a<form>
将经常包含其他块级元素(用于结构的 div,或者尽管我对此感到畏缩,但表格可以帮助组织表单字段等)。并且有一个包含块元素的内联元素,虽然完全有可能,但在语义上是有问题的。
我完全同意你关于<form>
不具表现力的观点,但同时考虑到标签的一般使用方式,这对我来说是一个块元素是有道理的。
HTML 3.2将<FORM>
元素定义为块级元素。浏览器当前关于这个元素的行为肯定是为了向后兼容。
A<form>
意味着语义和表象。它本质上是语义的,但也禁止将一个表单嵌入到另一个表单中,这意味着它是其所有内容(表单控件和其他块/内联内容)的明确容器。此外,内联节点不能包含块级节点,至少不是按照规范,<form>
默认情况下会限制标签。