将块级元素嵌套在<p>标记内......是对还是错?

Sal*_*n A 63 html css

嵌套<div><p>标记内的任何其他块级元素在语法和语义上是否正确.我在谈论HTML4 Transitional DTD.

如果不是那么可以代替使用<span style="display: block">吗?

Alo*_*hci 88

从语法上讲,div内部a p在所有HTML标准中都是无效的.此外,当使用符合标准的HTML解析器时,不可能在DOM中放置一个<div>元素<p>,因为开始<div>标记将自动关闭<p>元素.

从语义上讲,正确的选择取决于您标记的内容.您需要至少显示一个完整的段落样本以及可能的周围内容,以确保提供足够的信息以确定正确的语义标记.

然而,由于这两个<div><span>是免费的语义,并没有办法,CSS都不能更改,如果你有一定的内容<p>标签真正形成一个段落,并<span style="display: block">得到你,你正在寻找的表象的效果,那么是有效的HTML,将是一个完全合适的解决方案.

  • @jmlopez - 从广义上讲,它是关于`p`元素中块级元素的规则.但更确切地说,它只是解析算法中的一堆特定规则.请参阅http://dev.w3.org/html5/spec/tokenization.html#parsing-main-inbody并向下搜索"如果打开元素的堆栈在按钮范围内具有ap元素,那么就像一个结束标记一样标签名称"p"已被看到." (有几个单独的规则说明这一点). (2认同)

Guf*_*ffa 23

不,段落元素可能不包含其他块元素.

参考

段落标记用于文本块.如果你的元素是文本的一部分(而不是块元素),那么它在语义上是正确的,否则就不是.span标记display:block仍然是一个块元素.

  • 引用W3C的+1.您可以尝试从W3C复制并粘贴这些内容,以查看答案是否获得更多选票. (2认同)
  • @GarciaWebDev:复制格式化的内容并使其看起来相当不错有点困难.我认为W3C是您可以链接到的少数几个来源之一,没有它消失或变化太大的巨大风险.毕竟,如果W3C消失了,这个答案没有实际意义...... :) (2认同)

Jon*_*Jon 6

它在语法上是不正确的,因为您可以使用W3C标记验证器自己看到.

在语义上和实际上我会说它是"ok",因为a)它非常自然,b)所有浏览器都能正确处理它(事实上这是他们每天必须面对的最简单的问题之一).

如果你的HTML是由用户输入产生的(例如,一个HTML编辑器小部件,游客可以使用它来发表评论),那么我只想让它成为,即使它是"不正确".

否则,您可以稍微更改标记.就我个人而言

<div class="para">
    <div>Some content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

.para使用CSS 提供适当的边距.