標籤:htm 提高 屬性 扁平化 active index code ade 行內元素
先說基礎,HTML標籤有兩類:
1、區塊層級元素
div、h1~h6、address、blockquote、center、dir、dl、dt、dd、fieldset、form、hr、isindex、menu、noframes、noscript、ol、p、pre、table、ul……
特點:總是在新行上開始,高度、行高以及頂和底邊距都可控制,寬度預設的它的容器的100%,除非設定一個寬度。
功能:主要用來搭建網站構架、頁面配置、承載內容。
2、行內元素
span、a、abbr、acronym、b、bdo、big、br、cite、code、dfn、em、font、i、img、input、kbd、label、q、s、samp、select、small、strike、strong、sub、sup、textarea、tt、u、var……
特點:和其他元素都在一行上,高、行高及頂和底邊距不可改變,寬度就是它的文字或圖片的寬度,不可改變。
功能:用於加強內容顯示,控制細節,例如:加粗、斜體等。
雖然HTML標籤有很多,並且我們在製作頁面的時候可以無限的嵌套,但是嵌套也有規則,不能隨意的嵌套。
有些標籤是固定的嵌套規則,例如:ul包含li、ol包含li、dl包含dt和dd等,還有很多是獨立的標籤。為了寫出更優秀的頁面,一般遵循下面的規則:
1、區塊層級元素與區塊層級元素平級、內嵌元素與內嵌元素平級;
<div><span></span><p></p></div> //span是內行元素,p是區塊層級元素,所以這個是錯誤的嵌套<div><span></span><a></a></div> //這個是正確的嵌套
2、區塊層級元素可以包含內嵌元素或某些區塊層級元素,但內嵌元素不能包含區塊層級元素,它只能包含其他的內嵌元素;
<div><span></span></div><span><span></span></span>
3、有幾個特殊的區塊層級元素只能包含內嵌元素,不能再包含區塊層級元素;
h1、h2、h3、h4、h5、h6、p、dt
4、區塊層級元素不能放在標籤p裡面;
5、li標籤可以包含div標籤,因為li和div標籤都是裝在內容的容器。
小結:為了提高瀏覽器的渲染效率,我們應該盡少的嵌套標籤,扁平化。
關於HTML5新特性
在HTML5 中,元素不再按照display屬性來區分,而是按照內容模型來區分,分為:
中繼資料型(metadata content)是可以被用於說明其他內容的表現或行為,或者在當前文檔和其他文檔之間建立聯絡的元素;
區塊型(sectioning content)是用於定義標題及頁尾範圍的元素;
標題型(heading content)定義一個區塊/章節的標題;
文檔流型(flow content)是在應用程式和文檔的主體部分中使用的大部分元素;
語句型(phrasing content)是用於標記段落級文本的元素;
內嵌型(embedded content)是引用或插入到文檔中其他資源的元素;
互動型(interactive content)是專門用於與使用者互動的元素。
元素不屬於任何一個類別,被稱為穿透的;元素可能屬於不止一個類別,稱為混合的。
下面對常用標籤的嵌套規則進行總結
1、<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<p>的子項目是語句型元素
2、<header>、<footer>不可嵌套<header>、<footer>
3、<a>的子項目是transparent(以它的父元素允許的子項目為準),但不包括互動型元素(interactive content)
4、<form>不可嵌套<form>
5、<button>子項目是語句型元素,不可嵌套互動型元素(interactive content)
6、<caption>不可嵌套<table>
7、<dt>、<th>不可嵌套<header>、<footer>、區塊型元素(sectioning content)、標題型元素(heading content)
PS:以上內容整理自網路,如有錯誤或遺漏歡迎大家指正。
HTML嵌套規則