HTML 哪些元素不能有後代元素?編寫時應注意哪些?

還有哪些元素有順序要求?

對了 HTML5講的是 內容類別 。


你說的這個叫做 void element:

http://www.w3.org/TR/html5/syntax.html#void-elements

HTML5 裡面的 void element 是這些:

area, base, br, col, embed, hr, img, input, keygen, link, meta, param, source, track, wbr

void element 寫的時候,只需要 open tag,不需要 close。

但是注意,你看到源碼裡面有的 tag 沒有 close,不一定就是 void element,因為還有一個東西叫做 tag omission: 8 The HTML syntax


HTML標籤還是蠻靈活的。至於哪些元素不能有後代元素,我也無法全部所全,這方面知識我想查閱W3C有關於HTML方面的規範會更全面,也更權威。我一般情況下行內元素標籤不套塊元素標籤。


除了void element之外,你還問了哪些標籤是必須按照順序的,我舉例幾個:

html-&>head-&>body

table-&>thead-&>tbody-&>tr/td-&>tfoot

ul-&>li

dl-&>dt-&>dd

等等。。


在我的知識領域,只有單個標籤的有這種限制,比如 & &。至於注意事項,就兩點:

1,別拼錯標籤名。之前見過一個問題,那哥們遇到了很奇葩的 HTML 問題,瀏覽器渲染多了很多空白,還到處問哪裡出錯了。其實是標籤名寫錯了。

2,某些標籤是沒法相互嵌套的。比如:a 標籤下面不能嵌套 a,form 標籤裡面不能嵌套 form。此外就是 inline 屬性的標籤不能嵌套 block 屬性的標籤。比如:span 包裹一個 p 標籤。當然也有萬能標籤,a 雖然是 inline 屬性,但是除了 a 之外,隨便套。div 是 block 的萬能套標籤,span 是 inline 屬性的無意義標籤。如果你要用 html 結構模擬什麼東西,最好就是用一大群的 span 來模擬,這樣模擬出來的東西,無論放到 inline 還是 block 標籤下面都 OK。


最近在把自家產品做改版

需要一套代碼覆蓋全部終端

需要屏幕閱讀

需要盲操

才發現w3c真是目光高遠啊

不考慮語義還是圖樣


不好意思,我不會這個問題~

因為我寫的時候,都是無腦疊加div。除了文字,鏈接,控制項,其他所有都是用div~

然後inline元素,基本不套div(也就是block元素),我的習慣就是,所有inline元素都是最裡面的元素,我剛才嘗試了下,好像td這種inline標籤里嵌套div會出問題的。所以把所有的inline元素都放到black裡面~ 終歸不會出現什麼問題把。

假如哪裡錯了,指出~ 謝謝。


推薦閱讀:

如果網頁沒有 CSS 會怎麼樣?
有哪些在伺服器端給網頁截圖的辦法?
知乎上很多前端大佬說,要做好前端的話html和css基礎必須夯實。那麼,達到什麼水平才能叫基礎夯實呢?

TAG:前端開發 | HTML | HTML5 | HTMLCSS |