Html 内联元素是否可以有效地拥有块级元素子体?

Html 内联元素是否可以有效地拥有块级元素子体?,html,Html,将块级元素(如p直接嵌套在内联元素(如b)中是无效的 但是,使用css,例如display:inline block或position:absoluteis,在内联上下文中包含块级内容在概念上是合理的 浏览器在很大程度上接受内联元素中的此类块级元素,但在某些情况下,无效构造会导致实际问题: <p><span><p></p></span></p> 上面的示例不会被解析为三个嵌套元素;最里面的会隐式关闭外部的,而不考虑CS

将块级元素(如
p
直接嵌套在内联元素(如
b
)中是无效的

但是,使用css,例如
display:inline block
position:absolute
is,在内联上下文中包含块级内容在概念上是合理的

浏览器在很大程度上接受内联元素中的此类块级元素,但在某些情况下,无效构造会导致实际问题:

<p><span><p></p></span></p>

上面的示例不会被解析为三个嵌套元素;最里面的
会隐式关闭外部的
,而不考虑CSS。你可以看到这一点

是否有某种方法可以使用中间元素在内联元素中有效地放置块级元素?

如果不可能,大多数情况下是否有无效但功能性的解决方法(最好也适用于棘手的
标签)?

明确地说,我正在寻找一种不需要对文档结构进行侵入性更改的通用解决方案(即“只需使用
span
无处不在,万事俱备”并不是一个有吸引力的解决方案)。我想嵌入一个未知的(动态生成的)文档片段,该片段可能包含块级内容,因此修复该片段以排除块级元素是不可行的


相关:(主要针对直接嵌套的有效性)


在语义上是错误的,我认为HTML5只允许标记中的块元素(据我所知)

换句话说,您可以通过更改css使html代码按照您的需要工作,但这并不意味着您的html代码是正确的。您还应该考虑SEO和可访问性问题。<3/> > P> W3C验证器(在XHTML模式下)列出以下元素在<代码> <代码>和<代码> <> >代码>:

之间有效。
  • 反对
  • ins
  • 德尔
  • 地图
  • 钮扣
使用这些作为内联块扳手的页面在XHTML Strict中进行验证,但在HTML5中不进行验证。在这些标记中,我更喜欢
对象
,因为它的语义负担最少

HTML5似乎已经放弃了内联与块的区别,转而选择了一个更复杂的系统,在这个系统中有几个不同类别的元素,元素可以有哪些子元素取决于它的祖先是什么。在这些元素中,
ins
del
map
现在接受其父元素接受的相同类型的子元素,
button
只接受“语法内容”(最接近内联元素的内容)。
object
的错误消息没有多大意义,但据我所知,它继承了父元素的限制,同时也施加了自己的一些限制


据我所知,一旦你在其中(缺少一个iframe和一个新文档),就没有办法逃避措辞内容,所以这个问题的答案是否定的,不能在HTML5中完成(截至本文撰写之时)。

你的结构似乎与HTML5相关。除了一个空的P是“不鼓励的”。@dystroy:你不能嵌套P标签。我认为带项目符号的列表是一个相关问题的链接列表,不打算在这里回答。我用“相关”替换了“参见”,以澄清这些不是我要问的问题。内联元素具有块级子元素显然是无效的;这些相关的问题足够详细地说明了这一点。谢谢Eamon,但这仍然是您问题的答案。我不会建议你用一种无效的方法(如果存在的话)来做这件事;(我对后代感兴趣,不一定是孩子)。也许你应该重新考虑你想做什么。这是唯一的办法吗?也许其他人可以帮你。。。根据我的回答,我试图防止您编码错误,但您不应该这样做。也就是说,我认为非常需要一个本机内联块容器元素;任何带有
display:inline block
的内容都会变成语义混乱。是的,这是一个奇怪的任务,不是吗?应该注意的是,这不仅仅是一个简单的问题,即声明一个元素为inline,而是接受块本身。因为HTML不是XHTML,所以有一些关于自动关闭元素的规则,特别是当遇到块级元素时,
关闭。目前,解析器总是这样做,而假设的内联块元素将使其变得相当复杂。表和其他许多表也存在类似的问题。嵌套问题当然不是一个不可能解决的问题,但考虑到这种分析以及这些更改可能是为了简单起见而进行的,除了使用XHTML,我不会对真正的解决方案屏住呼吸,目前这似乎是一个低优先级的问题。需要注意的是,尽管在XHTML1.0中,

(例如)在形式上是有效的,但这只是因为DTD不能在这里表达规则。声明当INS和DEL元素作为内联元素时,它们不能包含块级内容。因此,这种嵌套形式上是有效的,但仍然是不一致和错误的。类似的规则至少适用于大多数其他情况。它在HTML5中无效的原因是5放弃了DTD。