在 XHTML 的語言里,我們都知道:ul 標簽包含著 li、dl 標簽包含著 dt 和 dd——這些固定標簽的嵌套規則十分明確。但是,還有許多標簽是獨立的,它們沒有被捆綁在一起,比如 h1、div、p……那么這些標簽的嵌套規則到底是怎樣的?今天就來說說這個話題。
提到 XHTML 標簽的嵌套規則,我們先得知道有這么二類 XHTML 標簽,一類叫做 塊級元素(block),一類叫做 內嵌元素(inline,也有許多人叫它:內聯、行內、線級等)。
塊級元素 和 內嵌元素 的劃分標準很簡單,請(qing)把(ba)下面(mian)二行代碼放進 body 標簽(qian)里:
<div style=”border: 1px solid red;”>div1</div>
<div style=”border: 1px solid red;”>div1</div>
瀏覽器的呈現效果:
頁面呈現的這二個 div 占據了二行空間,除非讓它們浮動(float)或是進行其他設置,否則誰都不挨著誰,它們都很霸道的占領屬于自己的那一行空間——但凡看到某個標簽有此現象,你就可以叫它:塊級元素(block);
再把下面(mian)二(er)行代碼也放進 body 標簽里:
<span style=”border: 1px solid red;”>span1</span>
<span style=”border: 1px solid red;”>span2</span>
瀏覽(lan)器(qi)的呈(cheng)現效(xiao)果:
span1 span1
這一次,兩個 span 并列在一行,它們之間睦鄰友好、親切和諧……像這樣的標簽行為,我們可以稱它們為:內嵌元素(inline);
塊級元素和內嵌元素的區別:
· 塊級元素 一般用來搭(da)建網(wang)站架構、布局(ju)、承載內容……像這些大體力(li)活都屬于塊(kuai)級元素(su)的,它包括以下(xia)這些標(biao)簽:
div、ul、li、dl、dt、dd、h1~h6、p、address……
· 內嵌元素 一(yi)般用在網站內(nei)容之中(zhong)的某些細節或部位(wei),用以“強調、區分(fen)樣(yang)式、上標(biao)(biao)、下(xia)標(biao)(biao)、錨點(dian)”等等,下(xia)面(mian)這些標(biao)(biao)簽都屬于內(nei)嵌元(yuan)素:
a、span、strong、sub、sup、img……
· 塊元素 和 內嵌元素 是可以互相轉換的,轉換(huan)的代碼如(ru)下:
display: block; /* 轉(zhuan)成塊元素 */
display: inline; /* 轉(zhuan)成內(nei)嵌元素 */
· 塊元素 和 內嵌元素 對于 CSS 的調用規則是(shi)不一(yi)樣的(這篇文章討(tao)論的是(shi)標簽嵌(qian)套,所(suo)以對這個知識(shi)點(dian)不展開(kai)說(shuo)明)。
簡單認識了塊元素和內嵌元素以后,下面就可以羅列 XHTML 標簽的嵌套規則了:
1. 塊元素可以包含內聯元素或某些塊元素,但內聯元素卻不能包含塊元素,它只能包含其它的內聯元素:
<div><h1></h1><p></p></div> —— 對
<a href=”#”><span></span></a> —— 對
<span><div></div></span> —— 錯
2. 塊級元素不能放在<p>里面:
<p><ol><li></li></ol></p> —— 錯
<p><div></div></p> —— 錯
3. 有幾個特殊的塊級元素只能包含內嵌元素,不能再包含塊級元素,這幾個特殊的標簽是:
h1、h2、h3、h4、h5、h6、p、dt。
4. li 內可以包含 div 標簽 —— 這(zhe)一(yi)條其實不(bu)必(bi)單獨列出來(lai)的,但是網(wang)上許多人對此有(you)些疑惑,就(jiu)在這(zhe)里略(lve)加說明:
li 和 div 標簽都是裝載內容的(de)容器(qi),地位平等,沒有(you)級(ji)別之分(例(li)如(ru):h1、h2 這樣森嚴的(de)等級(ji)制度^_^),要知道,li 標簽連它的(de)父級(ji) ul 或者是 ol 都可以容納的(de),為什么有(you)人(ren)會覺得(de)(de) li 偏偏容納不下一個 div 呢?別把 li 看(kan)得(de)(de)那么小氣嘛(ma),別看(kan) li 長得(de)(de)挺瘦小,其實 li 的(de)胸襟(jin)很大滴……
5. 塊級元素與塊級元素并列、內嵌元素與內嵌元素并列:
<div><h2></h2><p></p></div> —— 對
<div><a href=”#”></a><span></span></div> —— 對
<div><h2></h2><span></span></div> —— 錯
先總結到這里,以后如有新(xin)的(de)發現,隨時更新(xin)。