亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么瀏覽器認為此<div />標記沒有立即結束?

為什么瀏覽器認為此<div />標記沒有立即結束?

森林海 2019-12-05 15:56:09
鑒于以下HTML:<div style="background-color:green"/><div>text</div>大多數瀏覽器以綠色顯示文本,表示該<div/>速記未被識別為“已終止”,并且跨越第二條<div>。還是這是標準所說的?
查看完整描述

3 回答

?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

嚴格來說,該<div>元素是HTML中的非空/非空元素,即,它并非旨在自封閉。盡管<div />是有效的XHTML(由于/>表示有一個自動關閉(或為空)的XML元素),但普通的HTML解析器和某些驗證器將其解釋為未封閉的開始標記,因此是無效的HTML 4.01和HTML5。1個

實際上,通過W3C驗證程序(作為HTML5)運行給定的HTML片段會導致以下錯誤消息:

在非無效HTML元素上使用的自動關閉語法(/>)。忽略斜杠并將其視為開始標記。

因此,您所看到的。


根據HTML5規范(在第一個鏈接中):

非void元素必須具有結束標記,除非此參考文獻的HTML元素部分中該元素的子部分指出可以省略其結束標記。

之后,該<div>元素的小節指出:

div元素必須同時具有開始標簽和結束標簽。

這使得<div>與眾不同<p><li>已知并非總是需要結束標記。

如果<p>在未關閉的位置后緊接一個<p>,它將隱式關閉前一個<p>。同樣適用<li>。這是因為您不能直接將多個段落或列表項嵌套在一起。但是,<div>可嵌套到任何深度。因此,打開<div>標簽不會關閉先前未打開的<div>標簽。

這就是為什么您看到自己所看到的。


在真正的XHTML頁面中(通過充當序列化為XML application/xhtml+xml),第一個<div />元素將不會擴展以包裝第二個<div>text</div>元素。取而代之的是,作為XHTML,它將遵循XML規則并將其自身包含為一個空元素,而不是遵循HTML標記湯規則并被自身解釋為開始標記。


查看完整回答
反對 回復 2019-12-05
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

標簽此時需要一個單獨的關閉器-可能會附加。

請注意,在正確的語法中,即使是自閉標簽也需要一個額外的空間(<br />,不是<br/>


查看完整回答
反對 回復 2019-12-05
?
Cats萌萌

TA貢獻1805條經驗 獲得超9個贊

這是因為傳統的HTML解析器從未編程過自動關閉元素/>。驗證器認為這/>>因為HTML解析器正是這樣做的?,F在不能在HTML5解析器中更改此行為,因為它會破壞太多依賴于皇家混亂(即HTML標記湯)的網站。但是,正如我在第一個腳注中提到的那樣,如果您真的想在頁面中自動關閉“空”元素(而不是真正的void元素),請將您的頁面序列化為XML,您將可以自由使用(實際上是必需的)遵循XML規則。

查看完整回答
反對 回復 2019-12-05
  • 3 回答
  • 0 關注
  • 698 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號