作為網(wǎng)站技術(shù)開(kāi)發(fā)人員而言,往往是站在自己的開(kāi)發(fā)角度來(lái)實(shí) 施網(wǎng)站布署(讀取數(shù)據(jù)及開(kāi)發(fā)的方便性等等),而不是站在網(wǎng)站訪問(wèn)者與搜索引擎角度。因此大部分的網(wǎng)站在瀏覽方面不夠直觀或是方便,特別是現(xiàn)在w3c的規(guī)范,更是在大部分的網(wǎng)站開(kāi)發(fā)人員腦里一片空白。何況百度 、google、msn、yahoo等專(zhuān)業(yè)搜索引擎更有自己的搜索規(guī)則及判斷網(wǎng)頁(yè)等級(jí)技術(shù),所以網(wǎng)站要優(yōu)化,優(yōu)化的目的只有一個(gè):符合標(biāo)準(zhǔn),符合蜘蛛爬行的標(biāo)準(zhǔn),更重要的是符合網(wǎng)站訪問(wèn)者瀏覽的方便及易用性。以下文章中,AB織夢(mèng)模板網(wǎng)主要通過(guò)三個(gè)方面來(lái)講述有關(guān)W3C!
什么是W3C標(biāo)準(zhǔn)
W3C其實(shí)就是World Wide Web Consortium,全球萬(wàn)維網(wǎng)聯(lián)盟的簡(jiǎn)稱(chēng)。W3C的主要職責(zé)就是確定未來(lái)萬(wàn)維網(wǎng)的發(fā)展方向,并且制定相關(guān)的推薦(recommendation, 由于W3C是一個(gè)民間組織,沒(méi)有約束性,因此只提供建議)。HTML4.01規(guī)范建議(HTML4.01 Specification Recommendation)就是由W3C所制定的。它還負(fù)責(zé)制定XML,MathML等其他網(wǎng)絡(luò)語(yǔ)言規(guī)范。
怎樣通過(guò)W3C標(biāo)準(zhǔn)的驗(yàn)證?
步驟方法如下:
1、圖片的alt="" 屬性必須每張圖片都加上,而且對(duì)齊屬性用CSS來(lái)定義。不加不能通過(guò)XHTML 1.0的驗(yàn)證。
2、每個(gè)文檔必須加上DTD聲明。
a) !DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
去掉后能通過(guò)驗(yàn)證,但有警告:No DOCTYPE found! Checking with default XHTML 1.0 Transitional Document Type.
3、RSS的XML通過(guò)時(shí)其中的域名地址必須與檢測(cè)的地址一致,否則會(huì)報(bào)錯(cuò)。
4、標(biāo)簽的鏈接屬性加上JAVASCRIPT事件時(shí)必須為#空鏈,不能為javascript:;或javascript:void(null);
5、同一個(gè)頁(yè)面當(dāng)中,同名的ID會(huì)產(chǎn)生沖突。所以以ID定義樣式的必須改成類(lèi)引用。
如果不用W3C來(lái)檢測(cè)的話(huà),在CSS設(shè)計(jì)里是允許這樣做的。
那是程序的角度不能相同,CSS上是可以相同的!
之前就是相同的產(chǎn)生問(wèn)題,后面就改成類(lèi)引用了!
6、不可省略雙引號(hào)或單引號(hào)。
a) 這個(gè)是指屬性,標(biāo)準(zhǔn)是雙引號(hào)~
單引號(hào)也能通過(guò)驗(yàn)證。
7、標(biāo)簽之間不可錯(cuò)位嵌套。
這是不允許的。
8、所有的標(biāo)簽都使用小寫(xiě)。
9、FLASH的標(biāo)簽代碼中不能含有,必須采用其它的方法實(shí)現(xiàn)。
10、所有的標(biāo)簽中含有的屬性必須有值(官方的說(shuō)法)。
11、標(biāo)簽必須配對(duì)完成,單標(biāo)簽必須以/關(guān)閉
12、JS和CSS外部引入文件必須加上類(lèi)型定義。
13、所有的樣式全部寫(xiě)在外部文件。用類(lèi)名定義。在使用的地方引用。
14、頁(yè)面上的一些特殊字符必須用HTML代碼來(lái)標(biāo)識(shí).如“&”寫(xiě)成“&“
沒(méi)通過(guò)W3C 標(biāo)準(zhǔn)驗(yàn)證的原因
每次修正代碼后要刷新代碼,使它們重新生效——一個(gè)小錯(cuò)誤常常會(huì)引發(fā)之后整頁(yè)的連串錯(cuò)誤。因此如果操作不當(dāng),“修正錯(cuò)誤”也可能引發(fā)更多錯(cuò)誤。每次修正后使代碼重新生效,這樣就可以確保完全解決問(wèn)題。
知道了上面這些基本的異常情況,下面discuz模板網(wǎng)就來(lái)看看版面設(shè)計(jì)無(wú)效的幾個(gè)原因。
1、div 標(biāo)簽未關(guān)閉
這是版面設(shè)計(jì)失效的最常見(jiàn)原因之一。當(dāng)我們了解到這是多少精致的版塊設(shè)計(jì)失效的罪魁禍?zhǔn)讜r(shí),總會(huì)大吃一驚。開(kāi)啟的div標(biāo)簽是最普遍的版塊設(shè)計(jì)失誤之一,也是最難診斷的失誤之一。驗(yàn)證程序有時(shí)會(huì)指向錯(cuò)誤的開(kāi)啟div標(biāo)簽,診斷時(shí)就像大海撈針一樣麻煩。
2、麻煩的embed標(biāo)簽
九十年代早期,Microsoft和Netscape的瀏覽器開(kāi)始能夠辨認(rèn)非標(biāo)準(zhǔn)的獨(dú)有字體。遺憾的是這意味著W3C驗(yàn)證程序還不能識(shí)別某些關(guān)鍵HTML 標(biāo)簽,如“embed”,即使這些標(biāo)簽已經(jīng)被廣泛使用。如果確實(shí)希望得到嚴(yán)格的DOCTYPE(文檔類(lèi)型)驗(yàn)證,就只能放棄嵌套。
如果同時(shí)想要生效的版面設(shè)計(jì)和嵌入式媒體,可以試試Flash Satay方法。
3、不當(dāng)?shù)腄OCTYPE聲明
不聲明DOCTYPE,或者在文件開(kāi)始錯(cuò)誤聲明DOCTYPE,也是一個(gè)常見(jiàn)錯(cuò)誤。根據(jù)一般經(jīng)驗(yàn),Strict DOCTYPE是大家追求的最高級(jí)驗(yàn)證。Strict validation表明你的網(wǎng)頁(yè)能夠在所有瀏覽器上都得到最佳展示。Strict 聲明代碼如下:
4、結(jié)尾斜線(xiàn)
如果你的網(wǎng)站不能驗(yàn)證,很有可能是在代碼的某個(gè)地方漏寫(xiě)了結(jié)尾斜線(xiàn)。我們很容易忽略結(jié)尾斜線(xiàn)之類(lèi)的東西,特別是在image標(biāo)簽等元素中。例如:
在嚴(yán)格的DOCTYPE中這是無(wú)效的。要在img標(biāo)簽結(jié)尾處加上“/”以解決此問(wèn)題。
5、Align標(biāo)簽
如果DOCTYPE被設(shè)為T(mén)ransitional,你就會(huì)使用“align”標(biāo)簽,但如果要求更高一點(diǎn)希望得到Strict驗(yàn)證,你會(huì)看到很多錯(cuò)誤。 Align是另一個(gè)不可用于版面設(shè)計(jì)的標(biāo)簽??梢試L試用“float”或者“text-align”來(lái)代替align轉(zhuǎn)換元素。
6、JavaScript
如果已經(jīng)聲明Strict DOCTYPE,就需要在JavaScript中覆蓋CDATA標(biāo)簽。驗(yàn)證程序的這一方面難倒了很多程序員,因?yàn)榫W(wǎng)站傾向于為廣告和追蹤腳本使用嵌入的 JavaScript。如果必須用到JavaScript,可以在其前后加上如下標(biāo)簽:
7、圖像需要“alt”屬性
你可能還沒(méi)有注意到,圖像也是高級(jí)驗(yàn)證的潛在絆腳石。除了結(jié)尾斜線(xiàn),高級(jí)驗(yàn)證也要求用alt標(biāo)簽來(lái)描述圖像,如alt= ”Scary vampire picture”.
搜索引擎也靠alt標(biāo)簽來(lái)識(shí)別網(wǎng)頁(yè)上的圖像,所以無(wú)論怎樣加上alt標(biāo)簽總是好的。
8、未知實(shí)體數(shù)據(jù)
實(shí)體數(shù)據(jù)是又一個(gè)影響驗(yàn)證的易犯錯(cuò)誤。我們可以考慮用適當(dāng)?shù)木幋a字符來(lái)代替“&”等符號(hào)。entire list中列出在XHTML版塊設(shè)計(jì)中可用的適當(dāng)?shù)木幋a字符實(shí)體數(shù)據(jù)。
9、不良嵌套
嵌套就是元素里又包括元素,如下所示:
我們?nèi)菀谆煜短自氐捻樞?。例如在div標(biāo)簽前啟動(dòng)strong標(biāo)簽,但又先關(guān)閉div標(biāo)簽。這可能不會(huì)改變版塊布局,但卻會(huì)使你的版塊設(shè)計(jì)失效。
10、缺少“title”標(biāo)簽
盡管這看上去是一個(gè)很明顯的錯(cuò)誤,很多程序員(包括我自己)還是經(jīng)常會(huì)在“head”版塊中遺漏title標(biāo)簽。當(dāng)你看到“missing a required sub-element of HEAD”(缺少HEAD的必要子元素)時(shí),才會(huì)發(fā)現(xiàn)自己忘記添加title標(biāo)簽了。