css3選擇器是在css2.0的基礎(chǔ)上的修改創(chuàng)新。他增加了一些UI元素狀態(tài)偽類選擇器、結(jié)構(gòu)偽類選擇器、屬性選擇器等。Css3新增的這些選擇器很多強大,他的出現(xiàn)給我們前端帶來了好多便利。
一、使我們的網(wǎng)頁代碼更簡潔、結(jié)構(gòu)更加清晰,結(jié)構(gòu)清晰就會有利于SEO(搜索引擎)的優(yōu)化,代碼簡潔說明代碼會少,代碼少文件就會小,占用的網(wǎng)絡(luò)帶寬就會少,那么網(wǎng)頁的加載速度就會快,用戶體驗度就會更好。例如::first-child是用來選擇某個元素的第一個子元素,比如你想讓列表中的"1"具有與眾不同的樣式,我們就可以使用:first-child來實現(xiàn):
li:first-child {background: #ff0;}
在沒有這個選擇器出現(xiàn)之前,我們都需在要第一個li上加上一個不同的class名,比如說“first”,然后在給他應(yīng)用不同的樣式
li.first {background: #ff0;}
其實這兩種最終效果是一樣的,只是后面這種,我們需要在html增加一個額外的class名,前一種就不需要如圖所示:
二、免除起名的煩惱,之前我們用css2.0寫一個網(wǎng)站需要給標(biāo)簽添加id或class名稱去區(qū)分不同的標(biāo)簽,id或class名稱的起名要求是:以英文字母開頭,后面可以連接數(shù)字、字母、下劃線、連字符和特殊字符,建議盡量使用英文字母,適當(dāng)使用下劃線和連接線;詞必達意,名稱要反映用途和相關(guān)信息,同時也要簡短。這一要求對于我們大多數(shù)不是英語專業(yè)、英語又不好的來說就比較困難。如果起的名字不是很規(guī)范那么就容易叫人覺得你不夠?qū)I(yè)。而不專業(yè)的起名也會給后期的開發(fā)維護帶來一些不必要的麻煩,css3新增的結(jié)構(gòu)偽類選擇器的出現(xiàn)給我們帶來了福利,我們不需要添加class或id名稱,也能輕松控制某一個標(biāo)簽,例如::nth-child()可以選擇某個的一個或多個特定的子元素,你可以按以下的方式進行選擇:
:nth-child(length);/*參數(shù)是具體數(shù)字*/
:nth-child(n);/*參數(shù)是n,n從0開始計算*/
:nth-child(n*length)/*n的倍數(shù)選擇,n從0開始算*/
:nth-child(n+length);/*選擇大于length后面的元素*/
:nth-child(n*length+1);/*表示隔幾選一*/
//上面length為整數(shù)
:nth-child()可以定義他的值(值可以是整數(shù),也可以是表達式),如上面所示,用來選擇特定的子元素,例如:nth-child(3),選擇某元素下的第三個子元素,(這里的3可以是你自己需要的數(shù)字),比如說,我需要選擇列表中的第三個li元素,那么我們可以直接這樣使用:
li:nth-child(3) { background: #f00; }
:nth-child(n),其中n是一個簡單的表達式,那么"n"取值是從“0”開始計算的,到什么時候結(jié)束我也不知道,如果你在實際應(yīng)用中直接這樣使用的話,將會選中所有子元素,比如說,在我們的demo中,你在li中使用":nth-child(n)",那么將選中所有的"li",如:
li:nth-child(n) {background: #ff0;} 等于li {background:#ff0;}
他其實是這樣計算的
n=0 --》 沒有選擇元素
n=1 --》 選擇第一個li,
n=2 --》 選擇第二個li,后在的依此類推,這樣下來就選中了所有的li
請看效果:
請注意了,這里的“n”只能是"n",不能使用其他字母代替,不然會沒有任何效果的。
不需要起名字了,對于我們前端人員來說我們就不需要去費勁心思去想各種名字,也不需要考慮是否符合命名規(guī)范,是否有利于SEO的優(yōu)化等問題。更不需要考慮自己英文水平的問題。
三、避免樣式?jīng)_突問題,提高工作效率。之前我們用id或class名稱時經(jīng)常會發(fā)生沖突,比如你習(xí)慣給最上面的div起名為top,那么你的同事可能沒看你的文檔,他也習(xí)慣性的起了一個top的名稱,那么他的樣式寫在了后邊,你的樣式在前邊就會被他的樣式覆蓋,因為我們的css樣式表的解析順序是叢前向后生效的。這時候當(dāng)你發(fā)現(xiàn)你寫好的樣式不對了,你就需要花費時間去調(diào)整,這樣由于沖突造成的工作時間的浪費會影響我們的工作效率。不需要起名字,就不會出現(xiàn)沖突,那么工作效率自然就能提高。
雖然現(xiàn)在還有好多瀏覽器不支持css3選擇器,例如ie6~8,但是隨著時間的發(fā)展,ie瀏覽器的緩慢日落,css3的到來是將來發(fā)展的必然趨勢,因此我們還是需要熟悉與理解css3新增的各個選擇器,做好準備迎接css3時代的到來。