如果按照這個邏輯,
,那麼
豈不是要被解析為
> 了嗎?如果你跟我想得一樣,你一定也會覺得這種文法很蠢。
不幸的是 HTML4 規範的製定者們不這麼認為,並且把它寫進規範裡了。不過顯然當時的瀏覽器廠商對這種語法也不以為然,支援的程度不大。 (在這一點上,說不定瀏覽器廠商們做了一件好事。)
倒數第二部分的 “/” 字元是可選的,而且沒有任何實際意義。所以
和
其實沒有實質差別。
正確性
喜歡 XML 和 XHTML 的開發者可能會說,「對呀,雖然 / 是可選的,但是
的寫法『更正確』一些。」
#
我必須告訴你你錯了。事實上,有觀點認為無內容標籤裡的 / 其實是一個被容忍的語法錯誤。這種容忍是基於相容性考慮的,它使得所有瀏覽器和解析器都把
和
同等對待。
關於這一點,Google 程式碼風格指南 也明確規定了不要關閉無內容標籤。
缺點
當然,不關閉無內容標籤也有弊端,不過我認為這掩蓋不了它的優點:使你的程式碼乾淨簡潔。
第一個缺點就是開發者必須知道哪些標籤的無內容標籤。假設你不知道
是不是無內容標籤,那麼當你找不到它的閉合標籤時,你就會疑惑到底應不應該關閉這個標籤。不過無內容標籤總共也只有那麼幾個,而且一般一眼就能看出來某個標籤是不是無內容標籤。
第二個缺點是編輯器可能對沒有閉合的無內容標籤處理不好。編輯器的開發者必須了解無內容標籤,提供適當的語法高亮和程式碼補全。當你在編輯器裡寫了一個 ,編輯器必須知道它後面永遠不會接一個 。
但是這些功能實作起來很簡單,我所知道的編輯器對這方面支援得都還挺好,所以這算不上一個真正的缺點。
我對無內容標籤的看法
#
我覺得無內容標籤這個概念其實是可以從 HTML 中剔除的,我們完全可以為這些標籤添加內容,來取代它的某些屬性。
以
標籤為例,它有一個強制的alt 屬性,這個屬性的存在是為了讓那些看不到圖片的使用者(可能是因為生理缺陷,也可能是因為他們使用的裝置不支援圖片)知道這張圖片的內容是什麼(如果圖片只是處於美觀考慮,你其實不應該加入alt 屬性)。
我的問題來了:為什麼不用
的內容來取代 alt 屬性?我認為這樣寫比較直觀:
Image of doge。
標籤甚至還有一個叫 content 的屬性!為什麼不直接把 content 的值寫在標籤的內容裡呢? 應該寫成 Value content ,就像
所以真正應該保留的無內容標籤只有少數幾個,只不過 W3C 必須考慮向後相容性,所以要改變現狀還是很困難的。