CSS選擇器

1. class與id的使用場(chǎng)景

  • 一個(gè)頁(yè)面中可以有多個(gè)同樣的class驮吱,可以用于不同標(biāo)簽但是樣式相同的元素上。
  • 一個(gè)頁(yè)面中只允許有一個(gè)id,id具有唯一性梅忌,多用于標(biāo)記頁(yè)面分級(jí)的塊級(jí)標(biāo)簽上瑰枫。

2.css選擇器常見(jiàn)的有幾種

  1. 基礎(chǔ)選擇器
    * 通用選擇器尸诽,選擇頁(yè)面上的所有元素
    #id id選擇器性含,選擇對(duì)應(yīng)id的元素
    .class class選擇器商蕴,選擇對(duì)應(yīng)class的一個(gè)或多個(gè)元素
    element 標(biāo)簽選擇器后德,選擇對(duì)應(yīng)標(biāo)簽名的一個(gè)或多個(gè)元素

  2. 組合選擇器
    E,F,... 多元素選擇器理张,用逗號(hào)隔開(kāi)的表示選擇多個(gè)元素悟耘,E,F或更多都是并列關(guān)系移迫,他們同時(shí)被選取
    E F 后代選擇器邪媳,用空格隔開(kāi)的表示選取E的后代中的F元素
    E>F 子元素選擇器,表示選取E的直接后代中所有F元素,與上一條的區(qū)別在于是不是子元素顿肺。
    eg:div>p 此例中只會(huì)選擇class為p1的p元素旷祸,p2不會(huì)被選取

<div>
    <p class="p1"></p>
    <div>
      <p class="p2"></p>   
    </div>
</div>

E+F 直接相鄰選擇器骚烧,表示選取E元素之后相鄰的同級(jí)F元素
E~F 普通相鄰選擇器,表示選取E元素后面的同級(jí)F元素,不論相鄰與否忠售。

  1. 屬性選擇器
    E[attr] 選取具有該屬性的元素。eg.p[name] 選取所有有name屬性的p元素逝她。
    E[attr=value] 選取所有attr屬性的屬性值為value的元素 eg.p[name="p1"] 會(huì)選取所有name屬性為 p1 的p元素

4.偽類(lèi)選擇器
E:first-child 選取作為父元素第一個(gè)子元素的E元素(實(shí)際形式是F E:first-child 區(qū)別于 E>:first-child
E:last-child 選取作為父元素最后一個(gè)個(gè)子元素的E元素
E:nth-child() 選取作為父元素第n個(gè)子元素的E元素吗跋,n從1開(kāi)始取,n為1的時(shí)候等價(jià)于first-child 選擇器
E:hover/link/active/visited 選取E元素的某一狀態(tài)宁昭,給對(duì)應(yīng)狀態(tài)添加樣式

  1. 偽元素選擇器
    E:first-letter 選取E元素的第一個(gè)字母跌宛。eg.
p:first-letter{color:red}  //n的顏色是紅色
<p>nihao</p>

E:before/after E元素的前面或后面的元素,一般用于在E元素的前面或后面插入元素积仗,可用來(lái)清除浮動(dòng)疆拘,或添加元素。

3. 選擇器的優(yōu)先級(jí)寂曹,復(fù)雜場(chǎng)景如何計(jì)算優(yōu)先級(jí)

它們之間的順序排列如下:
@import > 內(nèi)聯(lián)樣式 > id選擇器 > 類(lèi)選擇器哎迄、偽類(lèi)選擇器、屬性選擇器 > 標(biāo)簽選擇器隆圆、偽元素選擇器

在復(fù)雜的場(chǎng)景(即在應(yīng)用了各種的css選擇器的組合兩條或更多的css規(guī)則沖突時(shí))漱挚,會(huì)先比較優(yōu)先級(jí)較高的選擇器個(gè)數(shù),如果還相同則繼續(xù)向下渺氧,比較優(yōu)先級(jí)較低的選擇器的個(gè)數(shù)旨涝,以此類(lèi)推。

4. a:link, a:hover, a:active, a:visited 的順序

他們的順序是 a:link, a:visited,a:hover,a:active(鼠標(biāo)按下去時(shí)的狀態(tài))
至于為什么這么拍侣背,首先白华,他們都是偽類(lèi)選擇器,相同的選擇器優(yōu)先級(jí)別當(dāng)然相同贩耐,所以自然而然會(huì)排在后面的覆蓋前面的樣式弧腥。a:hover如果在a:visited后面的話,那么當(dāng)該鏈接訪問(wèn)過(guò)后潮太,就會(huì)一直保持訪問(wèn)后的樣式管搪,鼠標(biāo)滑上去即hover樣式怎么也不會(huì)生效,因?yàn)楸桓采w了。至于a:active,放在前面的話那么樣式不會(huì)生效抛蚤,active生效的場(chǎng)景台谢,hover也會(huì)生效,hover就會(huì)覆蓋active岁经。

5. 常見(jiàn)選擇器實(shí)例

#header  //選擇id為header的元素
.header  //選擇class為header的所有元素
.header .logo //選擇class為header的所有元素后代中class為logo的所有元素
.header.mobile // 選擇class為header和mobile的所有元素 eg. <p class="header mobile"></p>
.header p,.header h3 //選取class為header的所有元素的后代中 p 元素和 h3 元素
#header .nav>li //id為header元素中后代中class為nav的元素的所有 li 子元素
#header a:hover  //id為header元素中的所有a標(biāo)簽的hover狀態(tài)
#header .logo~p //id為header的元素后代中class為logo的元素的所有同級(jí)的p元素
#header input[type="text"] //id為header的元素后代中有屬性type且其值為text的所有input元素

6.偽類(lèi)選擇器

E:first-child 選取作為父元素第一個(gè)子元素的E元素
E:last-child 選取作為父元素最后一個(gè)個(gè)子元素的E元素
E:nth-child() 選取作為父元素第n個(gè)子元素的E元素朋沮,n從1開(kāi)始取,n為1的時(shí)候等價(jià)于first-child 選擇器
E:hover/link/active/visited 選取E元素的某一狀態(tài)缀壤,給對(duì)應(yīng)狀態(tài)添加樣式
E:enabled 選取表單中可用的元素
E:disabled 選取表單中禁用的元素

7. div:first-child樊拓、div:first-of-type、div :first-child和div :first-of-type的作用和區(qū)別

div:first-child 選取作為父元素第一個(gè)子元素的div元素
div:first-of-type 選取父元素中第一個(gè)出現(xiàn)的div元素(后面的div就不選取了)
div :first-child 選取所有div元素中第一個(gè)子元素
div :first-of-type 選取所有div元素中第一個(gè)出現(xiàn)的各類(lèi)元素 eg.

<div>
  <h3></h3>  //選中
  <p></p>     //選中
  <div></div>  //選中
  <div></div>
  <p></p>
  <p></p>
</div>
div :first-of-type //選取的如標(biāo)示

8. 代碼實(shí)踐

<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>

.item1:first-child 選取作為父元素第一個(gè)子元素的class為item1的元素塘慕,自然aa的顏色要變紅
.item1:first-of-type 選取作為父元素第一個(gè)出現(xiàn)的各類(lèi)class為item1的元素筋夏,aa所在的p元素第一次出現(xiàn),bb所在的h3元素第一次出現(xiàn)图呢,都被選中条篷,cc所在的h3在bb后面,因?yàn)閔3標(biāo)簽出現(xiàn)過(guò)一次蛤织,所以不再被選中赴叹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市指蚜,隨后出現(xiàn)的幾起案子乞巧,更是在濱河造成了極大的恐慌,老刑警劉巖摊鸡,帶你破解...
    沈念sama閱讀 212,686評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绽媒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡免猾,警方通過(guò)查閱死者的電腦和手機(jī)是辕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猎提,“玉大人免糕,你說(shuō)我怎么就攤上這事∮遣啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,160評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵牌芋,是天一觀的道長(zhǎng)蚓炬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)躺屁,這世上最難降的妖魔是什么肯夏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,736評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上驯击,老公的妹妹穿的比我還像新娘烁兰。我一直安慰自己,他們只是感情好徊都,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,847評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布沪斟。 她就那樣靜靜地躺著,像睡著了一般暇矫。 火紅的嫁衣襯著肌膚如雪主之。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,043評(píng)論 1 291
  • 那天李根,我揣著相機(jī)與錄音槽奕,去河邊找鬼。 笑死房轿,一個(gè)胖子當(dāng)著我的面吹牛粤攒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播囱持,決...
    沈念sama閱讀 39,129評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼夯接,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了洪唐?” 一聲冷哼從身側(cè)響起钻蹬,我...
    開(kāi)封第一講書(shū)人閱讀 37,872評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎凭需,沒(méi)想到半個(gè)月后问欠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,318評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粒蜈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,645評(píng)論 2 327
  • 正文 我和宋清朗相戀三年顺献,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枯怖。...
    茶點(diǎn)故事閱讀 38,777評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡注整,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出度硝,到底是詐尸還是另有隱情肿轨,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布蕊程,位于F島的核電站椒袍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏藻茂。R本人自食惡果不足惜驹暑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一玫恳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧优俘,春花似錦京办、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,861評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至视搏,卻和暖如春审孽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浑娜。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工佑力, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筋遭。 一個(gè)月前我還...
    沈念sama閱讀 46,589評(píng)論 2 362
  • 正文 我出身青樓打颤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親漓滔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子编饺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,687評(píng)論 2 351

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

  • 轉(zhuǎn)載自牢記31種CSS選擇器用法 1 * 星號(hào)選擇器用于選取頁(yè)面中的所有元素,可用于快速清除所有元素的 margi...
    Icestains閱讀 1,225評(píng)論 0 1
  • 基本選擇器 *{} 通配符選擇器响驴,適用任何元素h1 標(biāo)簽選擇器透且,選擇h1標(biāo)簽內(nèi)元素....
    字母31閱讀 618評(píng)論 0 0
  • 1.class 和 id 的使用場(chǎng)景? 兩者都能選取DOM節(jié)點(diǎn)并給DOM節(jié)點(diǎn)添加樣式,但是W3C標(biāo)準(zhǔn)里規(guī)定頁(yè)面中只...
    饑人谷_米彌輪閱讀 388評(píng)論 0 1
  • 1.class 和 id 的使用場(chǎng)景? class:類(lèi)選擇器豁鲤,一個(gè)標(biāo)簽可以有多個(gè)類(lèi)且同一個(gè)類(lèi)可以用到不同的標(biāo)簽上秽誊,...
    饑人谷_兔子君閱讀 1,183評(píng)論 0 0
  • 一.class 和 id 的使用場(chǎng)景? name:指定標(biāo)簽的名稱(chēng)應(yīng)用場(chǎng)景:①form表單:name可作為傳遞給服務(wù)...
    Sunset125閱讀 943評(píng)論 0 0