中午吃飯時與同事簡單聊了下H5和C3爲咱們提供的便利,晚上下班後簡單整理了下CSS3的選擇器,在這裏跟你們分享下。程序員
CSS3新增了許多靈活查找元素的方法,極大的提升了咱們查找元素的效率和精準度。CSS3選擇器與jQuery中所提供的絕大部分選擇器兼容。spa
其特色是經過屬性來選擇元素,具體有如下5種形式(E是element的首字母,下面都是簡寫代替,程序員老是那麼懶,哈哈哈):code
一、E[attr] 表示存在attr屬性便可;blog
/*存在*/
[class]{/*選中的是全部的div*/
color: red;
}
二、E[attr=val] 表示屬性值徹底等於val;element
/*全等*/
[class="abcd"]{/*選中的是div2*/
color: red;
}
3、E[attr*=val] 表示的屬性值裏包含val字符而且在「任意」位置;v8
/*包含(任意位置)*/
[class*="abcd"]{
color: red;
}/*選中的是div2和div3,div4*/
4、E[attr^=val] 表示的屬性值裏包含val字符而且在「開始」位置;get
/*以什麼開頭*/
[class^="abcd"]{
color: red;
}/*選中的是div2和div3*/
5、E[attr$=val] 表示的屬性值裏包含val字符而且在「結束」位置;it
/*結尾*/
[class$="abcd"]{
color: red;
}/*選中的是div2和div4*/
<body> <div><a href="#" class="abc">div1</a></div> <div><a href="#" class="abcd">div2</a></div> <div><a href="#" class="abcdef">div3</a></div> <div><a href="#" class="aabcd">div4</a></div> <div><a href="#" class="abc">div5</a></div> <div><a href="#" class="abc">div6</a></div> <div><a href="#" class="abc">div7</a></div> <div><a href="#" class="abc">div8</a></div> </body>
除了之前學過的:link、:active、:visited、:hover(我通常簡稱爲LV,HA能夠理解爲,我今天買了個LV的包包,因此很開心,哈哈哈),CSS3又新增了其它的僞類選擇器。io
2.1、以某元素相對於其父元素或兄弟元素的位置來獲取無素的結構僞類。ast
重點是要理解經過E來肯定元素的父元素。
E:first-child第一個子元素
E:last-child最後一個子元素
E:nth-child(n) 第n個子元素,計算方法是E元素的所有兄弟元素;
E:nth-last-child(n) 同E:nth-child(n) 類似,只是倒着計算;
n遵循線性變化,其取值0、1、2、3、4、... 可是當n<=0時,選取無效。
n但是多種形式:nth-child(2n),表示選中偶數項,固然選中偶數項還能夠寫成nth-child(even)、nth-child(2n+1)表示選中奇數項,固然選中奇數項還能夠寫成nth-child(odd)、nth-last-child(-n+5)表示選中的是倒數第五個元素等;
E:empty 選中沒有任何子節點的E元素;(使用不是很是普遍)
2.二、目標僞類
E:target 結合錨點進行使用,處於當前錨點的元素會被選中;
E::first-letter文本的第一個單詞或字(如中文、日文、韓文等);
E::first-line 文本第一行;
注意:E::before、E::after(比較經常使用,很方便)
是一個行內元素,須要轉換成塊元素
E:after、E:before 在舊版本里是僞類,在新版本里是僞元素,新版本下E:after、E:before會被自動識別爲E::after、E::before,按僞元素來對待,這樣作的目的是用來作兼容處理。
E::selection 可改變選中文本的樣式(文本顏色,背景色等);
注意:":" 與 "::" 區別在於區分僞類和僞元素