對於一個前端er,選擇器是平常生活中必須接觸的部分,這篇文章主要探討一下選擇其的分類及一些小技巧。html
【分類】
1.基礎選擇器
2.結構選擇器
3.僞類選擇器
4.僞元素
5.屬性選擇器前端
【描述】
1.基礎選擇器(瀏覽器都兼容)瀏覽器
* 通配符 (能夠匹配元素中全部的html元素) 如:*{color:#000;}則表明將頁面所有元素添加屬性爲#000的顏色值; E 元素選擇器(匹配特定的標籤) 如:a{text-decoration:underline;}則表明將頁面全部的a標籤設置下劃線; #id ID選擇器(匹配頁面特定的id) 如:#my{color:#000}則表明將頁面id爲my的元素添加屬性爲#000的顏色值; .class 類選擇器(匹配頁面特定的class) 如:.my{color:#000}則表明將頁面class爲my的元素添加屬性爲#000的顏色值; S1,S2 羣組選擇器(匹配包含S1,包含S2元素,匹配一個便可) 如:.my,.you{color:#000}則表明將頁面class爲my和class爲you的元素添加屬性爲#000的顏色值; S1S2 合併選擇器(匹配包含S1及S2的元素,該元素同時必須包含S1及S2) 如:.my.you{color:#000}則表明將頁面class有my及you的元素添加屬性爲#000的顏色值;
2.結構選擇器dom
S1 S2 後代選擇器(S1全部的後代S2) S1>S2 子選擇器(S1的子元素S2 IE7+) S1+S2 相鄰兄弟選擇器(S1後面的相鄰兄弟元素S2 IE7+) S1~S2 通用兄弟選擇器(S1後面的全部兄弟元素S2,IE7+)
【舉例圖示】
a.區分S1 S2及S1,S2及S1S2三類選擇器;ui
<div class="you me"> you and me </div> <div class="you"> you </div> <div class="me"> me <span class="you"> you </span> </div>
.me,.you{ color: deeppink; } .you.me{ background: #eee; } .me .you{ color: #0f0; }
添加如上結構及樣式,可獲得下面的效果:spa
能夠看出來.me,.you羣組選擇器即只要包含了任意一個便可生效;.me .you後代選擇是隻有.me的後代.you纔會生效,.me.you合併選擇器,是須要兩個選擇器都包含纔會生效。code
b.區分各種兄弟選擇器htm
<div class="parent"> <div class="son son1">son1</div> <div class="son">son2</div> <div class="son">son3</div> <div class="son">son4</div> </div> <div class="son"> son other </div>
.parent >.son{ color: #0f0; } .son1 + .son{ text-align: center; } .son1 ~ .son{ background: #eee; }
添加如上結構及樣式,可獲得下面的效果:
圖片
3.僞類選擇器ip
動態僞類選擇器 :link :visited :acitve(IE8+) :hover :focus(IE8+) 目標僞類選擇器 :target(IE9+) 語言僞類選擇器 :lang(language) ui元素狀態僞類選擇器(IE9+) :checked 選中態 :enabled 啓用態 :disabled 禁用態 結構僞類選擇器(IE9+) :first-child :last-child :root :nth-child(n) odd even :nth-last-child(n) :nth-of-type(n) :nth-last-of-type(n) :first-of-type :last-of-type :only-child :only-of-type :empty n的場景 n n*length n+length -n+length n*length+b odd even 否認僞類選擇器 :not (IE9+)
【舉例圖示】
以上僞類選擇器,結構僞類選擇器在平常效果中應用最爲普遍,應用恰當能夠獲得不少意想不到的效果。【具體效果會另開文章再更新】
4.僞元素
::first-letter 第一個字母 ::first-line 第一行文本 ::before 在元素前插入內容,但不會生成dom,能夠設置樣式【會在下篇文章補充說明】 ::after 在元素後插入內容,但不會生成dom,能夠設置樣式,經常使用於清除浮動【會在下篇文章補充說明】
5.屬性選擇器【IE7+】
E[attr] 匹配具備屬性attr的元素E E[attr=val] 匹配屬性attr爲val的元素E E[attr|=val] 以val 或者val-開頭 E[attr~=val] 屬性值要包含val這個屬性 E[attr*=val] 屬性值中有val這個字符串就能夠 E[attr^=val] 以val開頭 E[attr$=val] 以val結束