簡體   English   中英

關閉空標簽,HTML,XML

[英]Closing empty tags, HTML, XML

不久前,我提出了一個類似的問題,並且得到了一個很好的答案,現在我想根據我在使用Google Maps時發現的一些問題對這個問題進行稍作修改。

問題是,我一直使用<div style="clear:both"></div>清除浮點數。 例如,有時候我需要創建一個要用JS填充的空元素。 現在,由於HTML是XML的子集,為什么我不能使用<div style="clear:both" />而不是鍵入難看的結束標記。

我得到了一個很好的答案,我承認我在上一個問題中沒有完全理解,但是在使用Google Maps時,我注意到Google與我的想法相同 在他們的第一個代碼示例中,他們使用<div id="map-canvas"/>而沒有結束標簽。

因此,我的新問題是,即使這不是十分合適的HTML,在現實中是否還會出現這種情況?

請和謝謝。

現在,由於HTML是XML的子集

HTML不是XML的子集。

HTML 4和更早的版本是SGML應用程序,但是瀏覽器從未正確實現SGML規范。

XHTML 1.x是XML應用程序,但是如果您為XHTML提供XML內容類型(例如application/xhtml+xml ),則瀏覽器將僅使用XML解析規則。

HTML 5具有自己的解析規則,可以更好地反映瀏覽器的實際功能。 它允許在元素的末尾添加一個/字符,以使那些對XML迷上癮或語法突出顯示軟件性能較差的人可以省略end標記,但只能是那些元素。

我注意到Google與我有相同的想法。 在他們的第一個代碼示例中,他們使用<div id="map-canvas"/>而沒有結束標簽。

這是一個錯誤,在HTML中是不允許的。 它僅在瀏覽器中“起作用”,因為文檔的末尾早於允許作為div元素的子節點的任何元素或文本的開始。

問題是,我一直使用<div style="clear:both"></div>清除浮點數。

首先,這是一個討厭的方法。 它需要一個額外的元素,並且可以在渲染元素元素的地方添加空間。 幾乎在每種情況下都最好設置overflow: hidden在包含元素中以使其包裹浮點數。

HTML不是XML的子集。 HTML具有不同的結構。 有些元素是單數(例如圖像),根本不需要結束標記或結尾/ 這樣做的人需要用適當的結束標簽關閉。

但是,有些人使用XHTML,它基本上是使用XML語法的HTML。 這取決於您使用的文檔類型。

Google的例子在這種情況下是錯誤的。 它使用HTML 5文檔類型。 如果您通過W3驗證程序運行其摘要 ,它將告訴您:

第26行,第26列:在非無效HTML元素上使用的自動關閉語法(/>)。 忽略斜杠並將其視為開始標記。 <div id="map-canvas"/>

多數瀏覽器也可能會發生這種情況。 他們將其讀為好像div僅在此處打開。 在某個時候它將自動關閉。 /被忽略。

關於浮點數的清除:這樣做的方法既舊又丑陋,因為您需要額外的標記,這基本上是CSS問題。 幸運的是,這里有更好的方法,下面將對其中的一些方法進行詳細說明: 我可以使用哪些“ clearfix”方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM