Css 選擇器(詳細).

享受此刻...

class 和 id 的使用場景?

一個#id在HTML中只能出現(xiàn)一次蜻直,控制一個元素穆端;
而一個.class可以多次出現(xiàn)并且可以在多個元素中添加使用(復用)困曙;


CSS選擇器常見的有幾種?

  • 基礎選擇器:

    • *(通配符)通用元素選擇器恰矩,匹配頁面任何元素记盒。
    • #id id選擇器,匹配特定id的元素外傅。
    • .class 類選擇器纪吮,匹配 class 包含(不是等于)特定類的元素俩檬。
    • element 標簽選擇器。例:h1{..} p{..} div{..}
  • 組合選擇器:

    • E,F 多元素選擇器碾盟,用,分隔棚辽,同時匹配元素E或元素F。例:h1,div {..}
    • E F 后代選擇器巷疼,用空格分隔晚胡,匹配E元素所有的后代(不只是子元素、子元素向下遞歸)元素F嚼沿。例:div span{..}
    • E>F 子元素選擇器估盘,用>分隔,匹配E元素的所有直接子元素骡尽。例:div>p{..}
    • E+F 直接相鄰選擇器遣妥,匹配E元素之后的相鄰的同級元素F。例:h1+p{..}
    • E~F 普通相鄰選擇器(弟弟選擇器)攀细,匹配E元素之后的同級元素F(無論直接相鄰與否)箫踩。例:h1~p{..}
    • .class1.class2 id和class選擇器和選擇器連寫的時候中間沒有分隔符,.和 # 本身充當分隔符的元素谭贪。例:.logo.login{..} / .logo#menu{..}
    • element#id id和class選擇器和選擇器連寫的時候中間沒有分隔符境钟,.和 #本身充當分隔符的元素。div#menu{..} (一般直接#menu{..}即可俭识。)
  • 屬性選擇器:

    • E[attr] 匹配所有具有屬性為attr的元素(div[id]能選擇所有具有id屬性的div)慨削。例:input[type]{..}
    • E[attr=value] 匹配所有屬性為value的元素(div[type=text]匹配id=text的div)。例:input[type="text"]{..}
    • E[attr~=value] 匹配所有屬性attr具有多個空格分隔套媚,其中一個值等于value的元素缚态。例:input[type~=xx]{..}
    • E[attr ^=value] 匹配屬性attr的值以value開頭的元素。
    • E[attr $=value] 匹配屬性attr的值以value結(jié)尾的元素堤瘤。
    • E[attr *=value] 匹配屬性attr的值包含value的元素玫芦。
  • 偽類選擇器

  • E:first-child 匹配元素E的父元素的第一個子元素。例:p:first-child{..}

  • E:last-child 匹配元素E的父元素最后一個子元素本辐。例:p:last-child{..}

  • E:nth-child(n) 匹配其父元素的第n個子元素桥帆,第一個編號為1。例:p:nth-child(2){..}

  • E:first-of-type 匹配父元素下使用同種標簽的第一個子元素慎皱,等同于nth-of-type(1)环葵。例:p:first-of-type{..}

  • E:hover 匹配鼠標懸停智商的e元素。例:p:hover{..}

  • E:focus 匹配獲得焦點的e元素宝冕。例:.password:focus {border: 2px solid red;}

  • 偽元素選擇器

    • E::first-line 匹配E元素的第一行张遭。例:div::first-line{..}
    • E::first-letter 匹配E元素的第一個字母。例:.box::first-letter{color:red;}
    • E::before 在e元素之前插入生成的內(nèi)容地梨。例:div::before{..}
    • E::after 在e元素之后插入生成的內(nèi)容菊卷。例:.box::after{content:'..'}

選擇器的優(yōu)先級是怎樣的?對于復雜場景如何計算優(yōu)先級缔恳?

  • 常規(guī):

    • 屬性后加:”!important:p {color:#ccc!important;}
    • 內(nèi)聯(lián)樣式:<p style="color:red;"></p>
    • id選擇器: #id
    • 類選擇器: .class
    • 偽類選擇器:a:link
    • 屬性選擇器:h1{..}
    • 標簽選擇器:p[XXX]
    • 通用選擇器:*
    • 瀏覽器自定義
  • 復雜場景時:

  • 計算以下四類選擇器的數(shù)量:(多個就+1)
    a:內(nèi)聯(lián)樣式
    b:id選擇器
    c:類、屬性選擇器和偽類選擇器
    d:標簽選擇器洁闰、偽元素
    先比較a值的大小歉甚,a值大的則優(yōu)先級高;如果a值相等,則再比較b值的大小扑眉,b值大的優(yōu)先級高纸泄;如果b值相等,則比較c值的大小腰素,c值大的優(yōu)先級高聘裁;如果c值相等,則比較d值的大小弓千,d值大的優(yōu)先級高衡便;


a:link, a:hover, a:active, a:visited 的順序是怎樣的? 為什么洋访?

正確順序:a:link镣陕、a:visited、a:hover姻政、a:active

  • 原因如下:
  • 如果鏈接未被點擊呆抑,正常狀態(tài)只有a:link起效。
  • 鏈接如果被點擊過汁展,那起效的是a:link鹊碍、a:visited,后者會覆蓋前者效果善镰。
  • 如果鼠標懸停并且鏈接已經(jīng)被點擊過妹萨,那起效的是a:link年枕、a:visited炫欺、a:hover,后者會覆蓋前面所有效果。
  • 如果鼠標正點著鏈接不放熏兄,且鏈接之前已經(jīng)被點擊過品洛,那起效的是a:linka:visited摩桶、a:hover桥状、a:active,后者會覆蓋之前所有硝清。

以下選擇器分別是什么意思?

<pre>

#header{
}
<!-- 為 id為header的元素 設置樣式 >
```</pre>
<pre>```
.header{
}
<!-- 為 class為header的元素 設置樣式 >
```</pre>
<pre>```
.header .logo{
}
<!-- 為 class為header的所有帶class為logo子元素 設置樣式 >
```</pre>
<pre>```
.header.mobile{
}
<!-- 為 同時帶有class為header和mobile的元素 設置樣式 >
```</pre>
<pre>```
.header p, .header h3{
}
<!-- 為 class為header元素的所有p子元素和所有h3子元素 設置樣式 >
```</pre>
<pre>```
#header .nav>li{
}
<!-- header 元素下所有 class 為 nav 的子孫元素下的子元素 li 設置樣式 >
```</pre>
<pre>```
#header a:hover{
}
<!-- 為 id 為header元素下所有 a  設置鼠標懸浮樣式 >
```</pre>
<pre>```
#header .logo~p{
}
<!-- 為 id 為header元素下帶有class為logo的元素相鄰的p元素(p跟logo兄弟關(guān)系) 設置樣式 >
```</pre>
<pre>```
#header input[type="text"]{
}
<!-- 為 id 為header元素下辅斟,帶有該屬性和值的input  設置樣式 >
```</pre>
</pre>

---

> ## 列出更多偽類選擇器

- **(上面已經(jīng)有部分例子,這里就不展示了..)**
E:first-child   匹配元素E的第一個子元素芦拿。
E:link  匹配所有未被點擊的鏈接士飒。
E:visited   匹配所有已被點擊的鏈接查邢。
E:active    匹配鼠標已經(jīng)其上按下、還沒有釋放的E元素酵幕。
E:hover 匹配鼠標懸停其上的E元素扰藕。
E:enabled   匹配表單中可用的元素。
E:disabled  匹配表單中禁用的元素芳撒。
E:checked   匹配表單中被選中的radio或checkbox元素邓深。
E::selection    匹配用戶當前選中的元素。
E:nth-child(n)  匹配其父元素的第n個子元素笔刹,第一個編號為1芥备。
E:nth-last-child(n) 匹配其父元素的倒數(shù)第n個子元素,第一個編號為1徘熔。
E:nth-of-type(n)    與:nth-child()作用類似门躯,但是僅匹配使用同種標簽的元素。
E:nth-last-of-type(n)   與:nth-last-child() 作用類似酷师,但是僅匹配使用同種標簽的元素讶凉。
E:last-child    匹配父元素的最后一個子元素,等同于:nth-last-child(1)山孔。
E:first-of-type 匹配父元素下使用同種標簽的第一個子元素懂讯,等同于:nth-of-type(1)。
E:last-of-type  匹配父元素下使用同種標簽的最后一個子元素台颠,等同于:nth-last-of-type(1)褐望。
E:only-child    匹配父元素下僅有的一個子元素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1)串前。
E:only-of-type  匹配父元素下使用同種標簽的唯一一個子元素瘫里,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1)。
E:not(selector) 匹配不符合當前選擇器的任何元素荡碾。


---
> ## 以下的作用和區(qū)別 (注意空格的作用)
<pre>```
div:first-child谨读、div:first-of-type、
div :first-child坛吁、div :first-of-type```</pre>

- div:first-child 選擇div父元素下的第一個且是div的子元素
- div :first-child 選擇div元素下的第一個子元素
- div:first-of-type 選擇div的父元素下首個div子元素
- div :first-of-type 選擇div元素下首次出現(xiàn)的某類標簽劳殖,若有多種類型標簽,則選取這些標簽的第一個元素

---

> ##運行如下代碼拨脉,解析下輸出樣式的原因哆姻。

<style>
.item1:first-child{
color: red;
}
.item1:first-of-type{
background: blue;
}
</style>
<div class="ct">
<p class="item1">aa</p>
<h3 class="item1">bb</h3>
<h3 class="item1">ccc</h3>
</div>


![實例](http://upload-images.jianshu.io/upload_images/4007920-c39aba7e90dc00f6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

---

完結(jié)....End!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玫膀,一起剝皮案震驚了整個濱河市矛缨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖箕昭,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件誉简,死亡現(xiàn)場離奇詭異,居然都是意外死亡盟广,警方通過查閱死者的電腦和手機闷串,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筋量,“玉大人烹吵,你說我怎么就攤上這事〗拔洌” “怎么了肋拔?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長呀酸。 經(jīng)常有香客問我凉蜂,道長,這世上最難降的妖魔是什么性誉? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任窿吩,我火速辦了婚禮,結(jié)果婚禮上错览,老公的妹妹穿的比我還像新娘纫雁。我一直安慰自己,他們只是感情好倾哺,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布轧邪。 她就那樣靜靜地躺著,像睡著了一般羞海。 火紅的嫁衣襯著肌膚如雪忌愚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天却邓,我揣著相機與錄音硕糊,去河邊找鬼。 笑死申尤,一個胖子當著我的面吹牛癌幕,可吹牛的內(nèi)容都是我干的衙耕。 我是一名探鬼主播昧穿,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼橙喘!你這毒婦竟也來了时鸵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎饰潜,沒想到半個月后初坠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡彭雾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年碟刺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薯酝。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡半沽,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吴菠,到底是詐尸還是另有隱情者填,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布做葵,位于F島的核電站占哟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酿矢。R本人自食惡果不足惜榨乎,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瘫筐。 院中可真熱鬧谬哀,春花似錦、人聲如沸严肪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驳糯。三九已至篇梭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酝枢,已是汗流浹背恬偷。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留帘睦,地道東北人袍患。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像竣付,于是被迫代替她去往敵國和親诡延。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1.class 和 id 的使用場景? class:類選擇器古胆,一個標簽可以有多個類且同一個類可以用到不同的標簽上肆良,...
    饑人谷_兔子君閱讀 1,197評論 0 0
  • class 和 id 的使用場景 class:一個標簽可以有多個class且同一個class可以用到不同的標簽上筛璧,...
    尾巴尾巴尾巴閱讀 423評論 0 0
  • 1,class 和 id 的使用場景? 1.class是類選擇器惹恃,用.class定義夭谤,定位到頁面中有相同特征的一類...
    _思銘閱讀 372評論 0 0
  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨立于文檔元素的方式來指定樣式朗儒。該選擇器可以單獨使用,也...
    草鞋弟閱讀 2,424評論 0 1
  • 頭腦風暴會議后的你,是否感覺身體被掏空承二? 不在廣告公司榆鼠,時不時也要頭腦風暴一下。 不在傳銷公司亥鸠,放佛被洗腦妆够。 也不...
    WiFi密碼是多少閱讀 370評論 0 3