繁体   English   中英

范围内没有p元素,但看到了p结束标记.w3c验证

[英]No p element in scope but a p end tag seen.w3c validation

我的HTML如下所示。 我已打开所有元素并关闭它们。 还是当我在w3c上检查它时它显示错误。 我弄清楚了。

<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Untitled Document</title>
    </head>

    <body>
        <p>
            <div class="inr_content clearfix">
                 <div class="col2 first fl">
                      to provide a drive-in services.
                 </div>
                 <div class="col2 last fr">
                      to provide a drive-in services.
                 </div>
            </div>
        </p>
    </body>
</html>

那是因为你在p标签内嵌套了一个无效的块级元素。 您只能在p标记内嵌入内联元素,例如spanaimg 所以你的标记是无效的,考虑做类似的事情

<div class="inr_content clearfix">
   <div class="col2 first fl">
      <p>to provide a drive-in services.</p>
   </div>
   <div class="col2 last fr">
      <p>to provide a drive-in services.</p>
   </div>
</div>

来自W3C [1]

P元素代表一个段落。 它不能包含块级元素(包括P本身)。

1 - 参考

由于p元素的语法不允许div子句,并且可能省略结束标记</p> ,因此验证程序(和浏览器)在解析p时遇到<div>标记时隐含</p>元件。 也就是说,当正在解析p (或“打开”)时, div元素的开始标记会隐式关闭它,就好像标记具有:

<body>
    <p>
        </p><div class="inr_content clearfix">
             <div class="col2 first fl">

这意味着有一个p元素只有空格。 之后出现的</p>标记没有匹配的开始标记,并且报告为无效。 浏览器会忽略此类无家可归的结束标记,但验证者必须报告它们。

最小的变化是删除</p>标记。 这是否足够取决于你想要什么。 删除<p>标签也会删除p元素,这会影响渲染。 即使p元素没有渲染内容(内容高度为0),它也有默认的上下边距,可能会创建一些空的垂直空间。

如果您不想要这样的空间,只需删除<p>标签(当然还有</p> )。 如果你确实需要一些空间,通常最好删除标签,但是你还可以在CSS中在顶级div元素上设置一些合适的margin-top值。

即使HTML5中允许仅包含空格的p元素,也不建议使用它们。 这是与所谓的可触知内容相关的一般建议的一部分:“内容模型允许任何流内容或措辞内容的元素应在其内容中至少有一个节点是可触知的内容”。 文本通常是可触及的内容,但如果它只包含空格,则不会。

您不能在语义上将div放在<p>标记内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM