3 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個贊
嚴(yán)格來說,該<div>
元素是HTML中的非空/非空元素,即,它并非旨在自封閉。盡管<div />
是有效的XHTML(由于/>
表示有一個自動關(guān)閉(或?yàn)榭眨┑腦ML元素),但普通的HTML解析器和某些驗(yàn)證器將其解釋為未封閉的開始標(biāo)記,因此是無效的HTML 4.01和HTML5。1個
實(shí)際上,通過W3C驗(yàn)證程序(作為HTML5)運(yùn)行給定的HTML片段會導(dǎo)致以下錯誤消息:
在非無效HTML元素上使用的自動關(guān)閉語法(/>)。忽略斜杠并將其視為開始標(biāo)記。
因此,您所看到的。
根據(jù)HTML5規(guī)范(在第一個鏈接中):
非void元素必須具有結(jié)束標(biāo)記,除非此參考文獻(xiàn)的HTML元素部分中該元素的子部分指出可以省略其結(jié)束標(biāo)記。
之后,該<div>
元素的小節(jié)指出:
div元素必須同時具有開始標(biāo)簽和結(jié)束標(biāo)簽。
這使得<div>
與眾不同<p>
或<li>
已知并非總是需要結(jié)束標(biāo)記。
如果<p>
在未關(guān)閉的位置后緊接一個<p>
,它將隱式關(guān)閉前一個<p>
。同樣適用<li>
。這是因?yàn)槟荒苤苯訉⒍鄠€段落或列表項(xiàng)嵌套在一起。但是,<div>
可嵌套到任何深度。因此,打開<div>
標(biāo)簽不會關(guān)閉先前未打開的<div>
標(biāo)簽。
這就是為什么您看到自己所看到的。
1 在真正的XHTML頁面中(通過充當(dāng)序列化為XML application/xhtml+xml
),第一個<div />
元素將不會擴(kuò)展以包裝第二個<div>text</div>
元素。取而代之的是,作為XHTML,它將遵循XML規(guī)則并將其自身包含為一個空元素,而不是遵循HTML標(biāo)記湯規(guī)則并被自身解釋為開始標(biāo)記。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超5個贊
標(biāo)簽此時需要一個單獨(dú)的關(guān)閉器-可能會附加。
請注意,在正確的語法中,即使是自閉標(biāo)簽也需要一個額外的空間(<br />
,不是<br/>
)

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個贊
這是因?yàn)閭鹘y(tǒng)的HTML解析器從未編程過自動關(guān)閉元素/>
。驗(yàn)證器認(rèn)為這/>
是>
因?yàn)镠TML解析器正是這樣做的?,F(xiàn)在不能在HTML5解析器中更改此行為,因?yàn)樗鼤茐奶嘁蕾囉诨始一靵y(即HTML標(biāo)記湯)的網(wǎng)站。但是,正如我在第一個腳注中提到的那樣,如果您真的想在頁面中自動關(guān)閉“空”元素(而不是真正的void元素),請將您的頁面序列化為XML,您將可以自由使用(實(shí)際上是必需的)遵循XML規(guī)則。
添加回答
舉報