XHTML 的標(biāo)簽有許多:div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、span、 strong……我們?cè)谶\(yùn)用這些標(biāo)簽搭建頁(yè)面結(jié)構(gòu)的時(shí)候,是可以將它們無限嵌套的,但是,嵌套也需要有一定規(guī)則,不能任由自己的個(gè)人習(xí)慣胡亂嵌套—— XHTML 必竟不是 XML。
在 XHTML 的語(yǔ)言里,我們都知道:ul 標(biāo)簽包含著 li、dl 標(biāo)簽包含著 dt 和 dd——這些固定標(biāo)簽的嵌套規(guī)則十分明確。但是,還有許多標(biāo)簽是獨(dú)立的,它們沒有被捆綁在一起,比如 h1、div、p……那么這些標(biāo)簽的嵌套規(guī)則到底是怎樣的?今天就來說說這個(gè)話題。
提到 XHTML 標(biāo)簽的嵌套規(guī)則,我們先得知道有這么二類 XHTML 標(biāo)簽,一類叫做 塊級(jí)元素(block),一類叫做 內(nèi)嵌元素(inline,也有許多人叫它:內(nèi)聯(lián)、行內(nèi)、線級(jí)等)。
塊級(jí)元素 和 內(nèi)嵌元素 的劃分標(biāo)準(zhǔn)很簡(jiǎn)單,請(qǐng)把下面二行代碼放進(jìn) body 標(biāo)簽里:
<div style=”border: 1px solid red;”>div1</div>
<div style=”border: 1px solid red;”>div2</div>
瀏覽器的呈現(xiàn)效果:
div1
div2
頁(yè)面呈現(xiàn)的這二個(gè) div 占據(jù)了二行空間,除非讓它們浮動(dòng)(float)或是進(jìn)行其他設(shè)置,否則誰(shuí)都不挨著誰(shuí),它們都很霸道的占領(lǐng)屬于自己的那一行空間——但凡看到某個(gè)標(biāo)簽有此現(xiàn)象,你就可以叫它:塊級(jí)元素(block);
再把下面二行代碼也放進(jìn) body 標(biāo)簽里:
<span style=”border: 1px solid red;”>span1</span>
<span style=”border: 1px solid red;”>span2</span>
瀏覽器的呈現(xiàn)效果:
span1 span2
這一次,兩個(gè) span 并列在一行,它們之間睦鄰友好、親切和諧……像這樣的標(biāo)簽行為,我們可以稱它們?yōu)椋簝?nèi)嵌元素(inline);
塊級(jí)元素和內(nèi)嵌元素的區(qū)別:
· 塊級(jí)元素 一般用來搭建網(wǎng)站架構(gòu)、布局、承載內(nèi)容……像這些大體力活都屬于塊級(jí)元素的,它包括以下這些標(biāo)簽:
div、ul、li、dl、dt、dd、h1~h6、p、address……
· 內(nèi)嵌元素 一般用在網(wǎng)站內(nèi)容之中的某些細(xì)節(jié)或部位,用以“強(qiáng)調(diào)、區(qū)分樣式、上標(biāo)、下標(biāo)、錨點(diǎn)”等等,下面這些標(biāo)簽都屬于內(nèi)嵌元素:
a、span、strong、sub、sup、img……
· 塊元素 和 內(nèi)嵌元素 是可以互相轉(zhuǎn)換的,轉(zhuǎn)換的代碼如下:
display: block; /* 轉(zhuǎn)成塊元素 */
display: inline; /* 轉(zhuǎn)成內(nèi)嵌元素 */
· 塊元素 和 內(nèi)嵌元素 對(duì)于 CSS 的調(diào)用規(guī)則是不一樣的(這篇文章討論的是標(biāo)簽嵌套,所以對(duì)這個(gè)知識(shí)點(diǎn)不展開說明)。
簡(jiǎn)單認(rèn)識(shí)了塊元素和內(nèi)嵌元素以后,下面就可以羅列 XHTML 標(biāo)簽的嵌套規(guī)則了:
1. 塊元素可以包含內(nèi)聯(lián)元素或某些塊元素,但內(nèi)聯(lián)元素卻不能包含塊元素,它只能包含其它的內(nèi)聯(lián)元素:
<div><h1></h1><p></p></div> —— 對(duì)
<a href=”#”><span></span></a> —— 對(duì)
<span><div></div></span> —— 錯(cuò)
2. 塊級(jí)元素不能放在<p>里面:
<p><ol><li></li></ol></p> —— 錯(cuò)
<p><div></div></p> —— 錯(cuò)
3. 有幾個(gè)特殊的塊級(jí)元素只能包含內(nèi)嵌元素,不能再包含塊級(jí)元素,這幾個(gè)特殊的標(biāo)簽是:
h1、h2、h3、h4、h5、h6、p、dt。
4. li 內(nèi)可以包含 div 標(biāo)簽 —— 這一條其實(shí)不必單獨(dú)列出來的,但是網(wǎng)上許多人對(duì)此有些疑惑,就在這里略加說明:
li 和 div 標(biāo)簽都是裝載內(nèi)容的容器,地位平等,沒有級(jí)別之分(例如:h1、h2 這樣森嚴(yán)的等級(jí)制度^_^),要知道,li 標(biāo)簽連它的父級(jí) ul 或者是 ol 都可以容納的,為什么有人會(huì)覺得 li 偏偏容納不下一個(gè) div 呢?別把 li 看得那么小氣嘛,別看 li 長(zhǎng)得挺瘦小,其實(shí) li 的胸襟很大滴……
5. 塊級(jí)元素與塊級(jí)元素并列、內(nèi)嵌元素與內(nèi)嵌元素并列:
<div><h2></h2><p></p></div> —— 對(duì)
<div><a href=”#”></a><span></span></div> —— 對(duì)
<div><h2></h2><span></span></div> —— 錯(cuò)