[英]When using <p class=xxx> I am getting the response “No p element in scope but a p end tag seen.” on W3C compliance checker
[英]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
標記內嵌入內聯元素,例如span
, a
和img
。 所以你的標記是無效的,考慮做類似的事情
<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.