原文連接:http://www.dudo.org/article.asp?id=253
XHTML規(guī)范中有一條標(biāo)準(zhǔn)就是“每個(gè)XHTML標(biāo)簽都有一個(gè)結(jié)束標(biāo)記”。那么對(duì)于HTML中原來(lái)不帶結(jié)束標(biāo)記的元素,則在該結(jié)束前加上“/”來(lái)關(guān)閉這個(gè)標(biāo)簽,如,<img>標(biāo)簽原來(lái)在HTML中的寫(xiě)法:
<img src="..." alt="...">
到了XHTML中,就應(yīng)該在“>”前增加一個(gè)“/”來(lái)關(guān)閉這個(gè)標(biāo)簽,為了防止某些老式瀏覽器不認(rèn)識(shí)這種寫(xiě)法,因此要在“/”前加上一個(gè)空格(HTML兼容性標(biāo)準(zhǔn)):
<img src="..." alt="..." />
這似乎是說(shuō)在開(kāi)始標(biāo)記中加上一個(gè)“/”就可以關(guān)閉掉這個(gè)標(biāo)簽。特別是對(duì)于空內(nèi)的標(biāo)簽來(lái)說(shuō),似乎使用這種寫(xiě)法更簡(jiǎn)潔了。比如說(shuō),
<div class="clear"></div>
這是在清除浮動(dòng)(閉合浮動(dòng)元素)中經(jīng)常用到的一段代碼。那么它似乎可以樣寫(xiě):
<div class="clear" />
是的,<div>元素可以為空,這樣寫(xiě)沒(méi)有問(wèn)題,但是我們對(duì)其它標(biāo)簽也使用類(lèi)似的寫(xiě)法會(huì)出現(xiàn)什么樣的后果呢?如在<head>中引入外部Javascript文件,我們一般這么寫(xiě):
<script type="text/javascript" src="..." language="javascript"></script>
既然沒(méi)有內(nèi)容為空,我們們可不可以寫(xiě)成
<script type="text/javascript" src="..." language="javascript" />
我們發(fā)現(xiàn),這樣的寫(xiě)法在瀏覽器要么不起作用,要么會(huì)出錯(cuò),多數(shù)情況下,瀏覽器會(huì)認(rèn)為這個(gè)標(biāo)簽沒(méi)有關(guān)閉,而錯(cuò)誤地認(rèn)識(shí)<script>之后的所有內(nèi)容都是Javascript代碼,所以會(huì)產(chǎn)生錯(cuò)誤。再如,
<textarea id="tt" cols="10" rows="8" />
如果在瀏覽器運(yùn)行這段代碼,你會(huì)發(fā)現(xiàn)從<textarea>開(kāi)始,之后的所有XHTML代碼都會(huì)被當(dāng)作文本框的內(nèi)容出現(xiàn)在文本框內(nèi)。
這樣看來(lái),HTML4.0中已經(jīng)存在成對(duì)的標(biāo)簽在XHTML中必須使用已有的結(jié)束標(biāo)簽。那么<div>為什么可以呢?其實(shí),<div>也不可以,只是<div>的在瀏覽器沒(méi)有那么明顯的顯示而已。而諸如<span />一類(lèi)的寫(xiě)法就更加不正確了,首先<span>本身有關(guān)閉標(biāo)簽</span>,此外<span>標(biāo)簽內(nèi)容不能為空白(純空格也不行)。也就是說(shuō)除了<img>、<hr>、<link>、<br>等標(biāo)簽可以使用“/”關(guān)閉外,其它的元素必須使用</...>,否則會(huì)出現(xiàn)不可預(yù)料的問(wèn)題。