为什么非显示HTML标记会干扰显示标记

时间:2011-09-25 09:00:53

标签: forms html5 xhtml html

当我需要在一个表单中封装一些相距较远的字段时,我经常遇到问题,而在其他表单中,它们之间的字段。或者以表格形式封装表格的前两行,以其他形式封装其他两行,依此类推。但当然,这在标准实践中是不允许的。我的问题是为什么像form(和其他非显示标签)这样的标签必须被视为“显示”标签,并且它们也被限制在某些地方使用。有没有真正的理由。

PS:我特别想到的形式,我在一个地方定义了我想要的多个表单,并将它们的引用(例如id或名称)提供给相应的字段。那样形式标签不必以某种方式干扰字段的位置?

2 个答案:

答案 0 :(得分:1)

<form>如何成为非显示元素?您可以在其上应用各种CSS,它们会显示出来。只是他们通常没有默认的浏览器样式。将<div>中的元素包装起来并对其进行样式设置是一个新手错误,当它们内部的唯一内容是单个元素时。

<div class="myform"><form>...</form></div>
<form><div class="myform">...</div></form>

两者同样多余。只需直接设置原始元素的样式。

<form class="myform">...</form>

现在,在你跳起来之前:我不是说你在做那件事。只是一般性建议。

关于限制使用:这可能会使实现者(浏览器创建者)和向后兼容性变得更容易。

答案 1 :(得分:1)

询问HTML行为的“为什么”问题通常不是一项有用的活动。通常答案是“因为其中一个浏览器最初是这样做的,而且出于向后兼容的原因我们坚持使用它。”

另请注意@DanMan关于<form>的可显示性的内容。

但是,您在一个地方声明表单然后通过id与控件关联的控件的描述与HTML5 form attribute所做的非常相似。唯一的区别是控件引用表单,而不是引用控件的表单。我们现在需要做的就是等待浏览器中的实现。