相信大家都知道html和css,知道html結(jié)構(gòu)和css表現(xiàn)分離,知道html語(yǔ)義化,這些都是這幾年的熱門(mén)關(guān)鍵字。語(yǔ)義化的html在國(guó)內(nèi)也是一兩年前才開(kāi)始被追捧的,看看現(xiàn)在群里談?wù)摰膆tml結(jié)構(gòu),關(guān)于html結(jié)構(gòu)的面試題,語(yǔ)義化的html占據(jù)了很大一部分。那么為什么要使用語(yǔ)義化的HTML?語(yǔ)義化的HTML到底有什么好處呢?
HTML是提供網(wǎng)頁(yè)文檔內(nèi)容的上下文結(jié)構(gòu)和含義;html本身是沒(méi)有表現(xiàn)的,我們看到例如<h1>是粗體,字體大小2em,加粗;<strong>是加粗的,不要認(rèn)為這是html的表現(xiàn),這些其實(shí)html默認(rèn)的css樣式在起作用,所以首先我們要知道html和頁(yè)面的表現(xiàn)是沒(méi)有關(guān)系的,這些是css的事情。HTML在頁(yè)面中的作用就是結(jié)構(gòu)和含義,通俗點(diǎn)說(shuō)就是劃分內(nèi)容,這里放什么,我們放的是什么。
語(yǔ)義化的HTML結(jié)構(gòu)首先要強(qiáng)調(diào)HTML結(jié)構(gòu)
HTML結(jié)構(gòu)是頁(yè)面的骨架,一個(gè)頁(yè)面就好像一幢房子,HTML結(jié)構(gòu)就是鋼精鋼筋混泥土的墻,一幢房子如果沒(méi)有鋼精鋼筋混泥土的墻那就是一堆費(fèi)磚頭,不能住人,不能辦公。css是裝飾材料,是原木地板,是大理石,是油漆,是用來(lái)裝飾房子的,CSS的強(qiáng)大就不用多說(shuō)了,css如果沒(méi)有html結(jié)構(gòu)那就是一堆木板,一同油漆,沒(méi)有了實(shí)際使用價(jià)值。CSS完全依靠引用它的(X)HTML文檔。如果你想使CSS的能力充分發(fā)揮到極致,提供一個(gè)用既干凈又有結(jié)構(gòu)的內(nèi)容的html是非常必要的,“HTML是在互聯(lián)網(wǎng)上發(fā)布超文本的通用語(yǔ)……HTML使用標(biāo)簽來(lái)對(duì)文本結(jié)構(gòu)化”(http://www.w3.org/MarkUp/)。
語(yǔ)義化的HTML結(jié)構(gòu)怎么寫(xiě)? HTML是一種對(duì)文本內(nèi)容進(jìn)行結(jié)構(gòu)和意義(或者說(shuō)“語(yǔ)義”)進(jìn)行補(bǔ)充的方法。它會(huì)告訴我們說(shuō):“這行是一個(gè)標(biāo)題,這幾行組成了一個(gè)段落。這些文字是項(xiàng)目列表,這些文字是鏈接到互聯(lián)網(wǎng)上另一個(gè)文件的超鏈接。”值得注意的是,不應(yīng)該讓HTML來(lái)告訴我們:“這些文字是藍(lán)色的,這些文字又是紅色的。這部分內(nèi)容是最最靠右的一欄,這行內(nèi)容是斜體字!边@些和表現(xiàn)相關(guān)的信息是CSS的工作。在做前端開(kāi)發(fā)的時(shí)候要記。篐TML告訴我們一塊內(nèi)容是什么(或其意義),而不是它長(zhǎng)的什么樣子。當(dāng)我們提到“語(yǔ)義標(biāo)記”的時(shí)候,我們所說(shuō)的HTML應(yīng)該是完全脫離表現(xiàn)信息的,其中的標(biāo)簽應(yīng)該都是語(yǔ)義化地定義了文檔的結(jié)構(gòu)。
語(yǔ)義化的HTML結(jié)構(gòu)其實(shí)很簡(jiǎn)單,首先掌握html中各個(gè)標(biāo)簽的語(yǔ)義,<div>是一個(gè)容器;<strong>是表示強(qiáng)調(diào);<ul><li>是一個(gè)無(wú)序列表等等…在看到內(nèi)容的時(shí)候想想用什么標(biāo)簽?zāi)芨玫拿枋鏊,是什么就用什么?biāo)簽。
語(yǔ)義化的HTML結(jié)構(gòu)到底有什么好處?
我們知道HTML5新增的標(biāo)簽,比如<header>和<footer>,html正在朝著更加健壯的語(yǔ)義化的HTML結(jié)構(gòu)發(fā)展,xhtml2在這點(diǎn)上沒(méi)html5先進(jìn),這也是xhtml2死亡的一個(gè)原因,這一點(diǎn)也說(shuō)明了語(yǔ)義化的HTML結(jié)構(gòu)是html的發(fā)展趨勢(shì)。
1.去掉或樣式丟失的時(shí)候能讓頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu):
html本身是沒(méi)有表現(xiàn)的,我們看到例如<h1>是粗體,字體大小2em,加粗;<strong>是加粗的,不要認(rèn)為這是html的表現(xiàn),這些其實(shí)html默認(rèn)的css樣式在起作用,所以去掉或樣式丟失的時(shí)候能讓頁(yè)面呈現(xiàn)清晰的結(jié)構(gòu)不是語(yǔ)義化的HTML結(jié)構(gòu)的優(yōu)點(diǎn),但是瀏覽器都有有默認(rèn)樣式,默認(rèn)樣式的目的也是為了更好的表達(dá)html的語(yǔ)義,可以說(shuō)瀏覽器的默認(rèn)樣式和語(yǔ)義化的HTML結(jié)構(gòu)是不可分割的。
2.屏幕閱讀器(如果訪客有視障)會(huì)完全根據(jù)你的標(biāo)記來(lái)“讀”你的網(wǎng)頁(yè).
例如,如果你使用的含語(yǔ)義的標(biāo)記,屏幕閱讀器就會(huì)“逐個(gè)拼出”你的單詞,而不是試著去對(duì)它完整發(fā)音.
3.PDA、手機(jī)等設(shè)備可能無(wú)法像普通電腦的瀏覽器一樣來(lái)渲染網(wǎng)頁(yè)(通常是因?yàn)檫@些設(shè)備對(duì)CSS的支持較弱).
使用語(yǔ)義標(biāo)記可以確保這些設(shè)備以一種有意義的方式來(lái)渲染網(wǎng)頁(yè).理想情況下,觀看設(shè)備的任務(wù)是符合設(shè)備本身的條件來(lái)渲染網(wǎng)頁(yè).
語(yǔ)義標(biāo)記為設(shè)備提供了所需的相關(guān)信息,就省去了你自己去考慮所有可能的顯示情況(包括現(xiàn)有的或者將來(lái)新的設(shè)備).例如,一部手機(jī)可以選擇使一段標(biāo)記了標(biāo)題的文字以粗體顯示.而掌上電腦可能會(huì)以比較大的字體來(lái)顯示.無(wú)論哪種方式一旦你對(duì)文本標(biāo)記為標(biāo)題,您就可以確信讀取設(shè)備將根據(jù)其自身的條件來(lái)合適地顯示頁(yè)面.
4.搜索引擎的爬蟲(chóng)也依賴于標(biāo)記來(lái)確定上下文和各個(gè)關(guān)鍵字的權(quán)重.
過(guò)去你可能還沒(méi)有考慮搜索引擎的爬蟲(chóng)也是網(wǎng)站的“訪客”,但現(xiàn)在它們他們實(shí)際上是極其寶貴的用戶.沒(méi)有他們的話,搜索引擎將無(wú)法索引你的網(wǎng)站,然后一般用戶將很難過(guò)來(lái)訪問(wèn).
5.你的頁(yè)面是否對(duì)爬蟲(chóng)容易理解非常重要,因?yàn)榕老x(chóng)很大程度上會(huì)忽略用于表現(xiàn)的標(biāo)記,而只注重語(yǔ)義標(biāo)記.
因此,如果頁(yè)面文件的標(biāo)題被標(biāo)記,而不是,那么這個(gè)頁(yè)面在搜索結(jié)果的位置可能會(huì)比較靠后.除了提升易用性外,語(yǔ)義標(biāo)記有利于正確使用CSS和JavaScript,因?yàn)槠浔旧硖峁┝嗽S多“鉤鉤”來(lái)應(yīng)用頁(yè)面的樣式與行為. SEO主要還是靠你網(wǎng)站的內(nèi)容和外部鏈接的。
6.便于團(tuán)隊(duì)開(kāi)發(fā)和維護(hù)
W3C給我們定了一個(gè)很好的標(biāo)準(zhǔn),在團(tuán)隊(duì)中大家都遵循這個(gè)標(biāo)準(zhǔn),可以減少很多差異化的東西,方便開(kāi)發(fā)和維護(hù),提高開(kāi)發(fā)效率,甚至 實(shí)現(xiàn)模塊化開(kāi)發(fā)。
如有不同觀點(diǎn),補(bǔ)充,歡迎留言討論。
感謝鬼哥,奶茶,小志,偷米飯,Caspar還有css森林群的討論
原文:http://www.css88.com/archives/1668
本文鏈接:http://www.95time.cn/tech/web/2009/6866.asp
出處:WEB前端開(kāi)發(fā)
責(zé)任編輯:bluehearts
◎進(jìn)入論壇網(wǎng)頁(yè)制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。
|