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