Html 推杆<;部门>;内部<;p>;正在添加额外的<;p>;
从 在HTML4中,DIV元素不能位于另一个块级元素内,如p元素。 然而,在HTML5中,DIV元素可以在内部找到,并且可以包含其他流内容元素,如P和DIV 我在表格里有这样的东西Html 推杆<;部门>;内部<;p>;正在添加额外的<;p>;,html,Html,从 在HTML4中,DIV元素不能位于另一个块级元素内,如p元素。 然而,在HTML5中,DIV元素可以在内部找到,并且可以包含其他流内容元素,如P和DIV 我在表格里有这样的东西 <p> <label...> <input...> </p> 但是当Rails自动生成一个错误解释div来包装输入时,一段变成了两段,我在Firebug中看到了这一点: <p> <label...> </p> <div..
<p> <label...> <input...> </p>
但是当Rails自动生成一个错误解释div来包装输入时,一段变成了两段,我在Firebug中看到了这一点:
<p> <label...> </p> <div...> <input...> </div> <p> </p>
另外,如果我只添加一个简单的
<p> <div> test </div> </p>
测试
同样的问题()也会出现,并在DOM中呈现为
<p> </p> <div> test </div> <p> </p>
测试
为什么?
更新:我给文章作者发了电子邮件,她做了相应的修改。来自:
p–段落
[……]
允许的内容
措辞内容
这句话的内容是什么
由短语元素和普通字符数据混合而成
正常的字符数据就是:未标记的文本。它们是:
a或em或强。。。[一堆其他元素,其中没有一个是div]
因此,
不是有效的HTML。根据规范中列出的标记省略规则,
标记由
标记自动关闭,从而使
标记没有匹配的
。浏览器有权尝试通过在
后面添加一个open
标记来更正它:
您不能将
放入
中,并从各种浏览器获得一致的结果。为浏览器提供有效的HTML,它们会表现得更好
您可以将
放入
中,但如果您将
替换为
,并对其进行适当的样式设置,则可以获得所需的内容
您在about.com上的引用与w3.org上的规范不一致,您的引用误导了您。webdesign.about.com页面完全错误;他们可能误解了HTML5草案。将DIV放在P中会引起很大的混乱;我认为在HTML5开发过程中甚至没有考虑过它 如果尝试在p中使用DIV,DIV start标记将隐式关闭p元素。这可能解释了你所看到的事情
为了避免此问题,如果内容包含或可能包含DIV元素,请不要使用p。改用DIV。虽然这是一个相当老的问题,但我想我应该分享我的问题解决方案,以帮助其他可能在谷歌上偶然发现此页面的人 如前所述,不允许将块元素放在p标签内。然而,在实践中,这并不是完全正确的。实际显示值实际上完全不相关;唯一需要考虑的是标记的默认显示值,例如,div的“block”和span的“inline”。更改显示值仍会使浏览器过早关闭p标记 然而,这也反过来起作用。您可以设置span标记的样式,使其行为与div标记完全相同,但在p环境中仍然可以接受它 因此,与其这样做,不如:
<p>
<div>test</div>
</p>
测试
您可以这样做:
<p>
<span style="display:block">test</span>
</p>
测试
请记住,浏览器以递归方式验证p环境的内容,因此即使是这样:
<p>
<span style="display:block">
<div>test</div>
</span>
</p>
测试
将导致以下结果:
<p>
<span style="display:block"></span>
</p>
<div>test</div>
<p>
</p>
测试
希望这能帮助其他人:)不可能在DOM中的
中放置元素,因为打开的
标记将自动关闭元素
不允许在其中包含其他元素。只允许
和
元素。在
中,我们只能添加与文本相关的标记。
br标签怎么样?使用DIV被认为是更好的做法吗?@Steve,是的,那么br
标签呢?如果您的意思是它们是否可能出现在p
元素中,则可以。br
的实际问题是,它不会将一行转换为一个元素,这使得样式和脚本编写可能存在问题。br标记如何?使用DIV被认为是更好的做法吗?@Steve:这取决于具体情况。当我需要一个组中的换行符时,我会使用一个容器来分组元素和一个
。请注意,HTML5还需要一个
结束标记的行为,从而产生一个空段落(尽管它可能只是由于现有的浏览器互操作才这样做)。参见@BoltClock:Mark Amery添加了“根据规范中列出的标记省略规则,标记会被
标记自动关闭,这使得
标记没有匹配的
”注释,我们需要更多说明吗?也许整段文字需要重写一下,我觉得看起来还可以。我的评论旨在澄清,浏览器不仅有权更正不匹配的结束标记,而且必须这样做。也许可以将它合并到段落中,但我认为它不需要重写。你说,。
在技术上仍然是无效的HTML,但它不是
是一个短语元素,位于
内部,更改其显示值不会使HTML无效。将span
设置为display:block
并将其放在p
中很可能是一种使用HTML/CSS的单一方式(尽管Jukka提出了一个有趣的理由,说明为什么有时候它是合理的)。然而,它是完全有效的HTML。当HTML规范谈论元素的允许内容时,它关心
<p>
<span style="display:block"></span>
</p>
<div>test</div>
<p>
</p>