CSS 之選擇器

選擇器

元素選擇器

  • *{ }
    1. 通配選擇符 (*)
    2. 選定所有對象万细。
    3. 通常不建議使用通配選擇符陪拘,因?yàn)樗鼤闅v并命中文檔中所有的元素厂镇,出于性能考慮左刽,需酌情使用欠痴。
  • E{ }
    1. 類型選擇符(E)
    2. 以文檔語言對象類型作為選擇符喇辽。
    <style>
    h1{font-size:20px;}
    p{font-size:13px;}
    </style>
    
    <h1>標(biāo)題</h1>
    <p>正文內(nèi)容</p>
    
  • #myid{ }
    1. ID選擇符
    2. 以唯一標(biāo)識符id屬性等于myid的E對象作為選擇符.
  • .myclass{ }
    1. 以class屬性包含myclass的E對象作為選擇符吠式。

關(guān)系選擇器

  • E F{ }
    1. 包含選擇器特占,又稱之為:后代選擇器是目。
    2. 選擇所有被E元素包含的F元素。
    3. 子選擇器不同的是揉抵,包含選擇符將會命中所有符合條件的后代冤今,包括兒子辟汰,孫子,孫子的孫子..
  • E>F{ }
    1. 子選擇器
    2. 選擇所有作為E元素的子元素F凑术。
    3. 包含選擇符不同的是淮逊,子選擇符只能命中子元素泄鹏,而不能命中孫輩备籽。
  • E+F{ }
    1. 相鄰選擇器
    2. 選擇緊貼在E元素之后F元素车猬。
    3. 兄弟選擇符不同的是珠闰,相鄰選擇符只會命中符合條件的相鄰的兄弟元素伏嗜。
    # 此例承绸,如果使用 p+p{color:#f00;} 八酒,那么p2,p5將會變成紅色羞迷;
    # 如果使用p~p{color:#f00;}衔瓮,那么p2,p3,p4,p5將會變成紅色热鞍;
    <style>
      /* 相鄰選擇符(E+F) */
      p+p{color:#f00;}
      /* 兄弟選擇符(E~F) */
      p~p{color:#f00;}
    </style>
    
    <p>p1</p>
    <p>p2</p>
    <h3>這是一個標(biāo)題</h3>
    <p>p3</p>
    <h3>這是一個標(biāo)題</h3>
    <p>p4</p>
    <p>p5</p>
    
  • E~F{ }
    1. 兄弟選擇符
    2. 選擇E元素后面的所有兄弟元素F偷办。
    3. 相鄰選擇符不同的是椒涯,兄弟選擇符會命中所有符合條件的兄弟元素废岂,而不強(qiáng)制是緊鄰的元素湖苞。

屬性選擇器

  • [att]
    選擇具有for屬性的所有元素
    <style>
      [for]{margin:10px;}
    </style>
    <p> 不帶有 for 屬性的 p 元素</p>
    <p for="Ethan"> 帶有 for 屬性的 p 元素 </p>
    <p for="Alice"> 帶有 for 屬性的 p 元素 </p>
    
  • E[att]
    選擇具有att屬性的E元素财骨。
    <style>
      img[alt]{margin:10px;}
    </style>
    
    <img src="圖片url" alt="" />
    <img src="圖片url" />
    
  • E[att="val"]
    選擇具有for屬性蚓再,并且for=Alice的所有元素
    <style>
      [for="Alice"]{margin:10px;}
    </style>
    <p> 不帶有 for 屬性的 p 元素</p>
    <p for="Ethan"> 帶有 for 屬性的 p 元素摘仅,且for的值為 Ethan </p>
    <p for="Alice"> 帶有 for 屬性的 p 元素娃属,且for的值為 Alice</p>
    
  • E[att^="val"]
    選擇具有att屬性掏击,且屬性值以字符串val開頭的E元素砚亭。
    #此例捅膘,將會命中1, 2兩個div寻仗,因?yàn)槠ヅ涞搅薱lass屬性署尤,且屬性值以a開頭
    <style>
      div[class^="a"]{border:2px solid #000;}
    </style>
    
    <div class="abc">1</div>
    <div class="acb">2</div>
    <div class="bac">3</div>
    
  • E[att$="val"]
    選擇具有att屬性且屬性值為以val結(jié)尾的字符串的E元素。
    #此例混坞,將會命中1, 3兩個div,因?yàn)槠ヅ涞搅薱lass屬性,且屬性值以c結(jié)尾
    <style>
      div[class$="c"]{border:2px solid #000;}
    </style>
    
    <div class="abc">1</div>
    <div class="acb">2</div>
    <div class="bac">3</div>
    
  • E[att*="val"]
    選擇具有att屬性且屬性值為包含字符串val的E元素禾酱。
    #此例颤陶,將會命中所有div,因?yàn)槠ヅ涞搅薱lass屬性搅方,且屬性值中都包含了b
    <style>
      div[class*="b"]{border:2px solid #000;}
    </style>
    
    <div class="abc">1</div>
    <div class="acb">2</div>
    <div class="bac">3</div>
    

偽類選擇器

  • :first-child
    向元素的第一個子元素添加樣式
  • :last-child
    向元素的最后一個子元素添加樣式
  • :nth-child(n)
    向元素的第 n 個子元素添加樣式
    特殊應(yīng)用(可用于表格隔行變色):
    • :nth-child(even)
      選中偶數(shù)位置的子元素姨涡,添加樣式
    • :nth-child(odd)
      選中奇數(shù)位置的子元素赏表,添加樣式
  • :nth-last-child(n)
    父元素的倒數(shù)第n個子元素E,假設(shè)第n個該子元素不是E跋选,則選擇符無效(E元素必須是某個元素的子元素)
    • 注意:

      <div>
        <p>第1個p</p>
        <p>第2個p</p>
        <span>第1個span</span>
        <p>第3個p</p>
        <span>第2個span</span>
      </div>
      
      1. 假設(shè)要命中倒數(shù)第一個p(即正數(shù)第3個p),那么CSS選擇符應(yīng)該是:
        p:nth-last-child(2)
      2. 而不是: p:nth-last-child(1)

      解釋:
      1. 倒數(shù)第1個p,其實(shí)是倒數(shù)第2個子元素俭尖。
      2. 基于選擇符從右到左解析稽犁,首先要找到第1個子元素,然后再去檢查該子元素是否為p虑椎,如果不是p,則n遞增泥技,繼續(xù)查找。

      1. 假設(shè)不確定倒數(shù)第1個子元素是否為E蝶棋,但是又想命中倒數(shù)第1個E玩裙,應(yīng)該這樣寫: p:last-of-type
  • :only-child
    匹配父元素僅有一個子元素鸯檬,且該子元素為E。
    要使該屬性生效,E元素必須是某個元素的子元素庐冯,E的父元素最高是body栖茉,即E可以是body的子元素吕漂。
    <style>
      h1{font-size:16px;}
      li:only-child{color:#f00;}
    </style>
    
    <h1>只有唯一一個子元素</h1>
    <ul>
        <li>結(jié)構(gòu)性偽類選擇符 only-child</li>   # 只有 這個字體變色了
    </ul>
    <h1>有多個子元素</h1>
    <ul>
        <li>結(jié)構(gòu)性偽類選擇符 only-child</li>
        <li>結(jié)構(gòu)性偽類選擇符 only-child</li>
        <li>結(jié)構(gòu)性偽類選擇符 only-child</li>
    </ul>
    
  • :first-of-type
    同類型中的第一個同級兄弟元素E
  • :last-of-type
    匹配同類型中的最后一個同級兄弟元素E。
    該選擇符總是能命中父元素的倒數(shù)第1個為E的子元素隙袁,不論倒數(shù)第1個子元素是否為E。
  • :only-of-type
    匹配同類型中的唯一的一個同級兄弟元素E弃榨。
    該選擇符總是能命中父元素的唯一同類型子元素E菩收,不論該元素的位置。
    <style>
          p:only-of-type{color:#f00;}
    </style>
    
    <div class="test">
      <p>結(jié)構(gòu)性偽類選擇符 only-of-type</p>
    </div>
    
  • :nth-of-type(n)
    匹配同類型中的第n個同級兄弟元素E鲸睛。
  • :nth-last-of-type(n)
    匹配同類型中的倒數(shù)第n個同級兄弟元素E娜饵。
    該選擇符總是能命中父元素的倒數(shù)第n個為E的子元素,不論倒數(shù)第n個子元素是否為E官辈。
  • :empty
    匹配沒有任何子元素(包括text節(jié)點(diǎn)箱舞,即文字)的元素E遍坟。
  • :not(s)
    匹配不含有s選擇符的元素E。
    <style>
      p:not(.abc){color:#f00;}
    </style>  
    
    <p class="abc">否定偽類選擇符 not(s)</p>  #只有class為 .abc的未變色晴股,后面的三個都變色了
    <p id="abc">否定偽類選擇符 not(s)</p>
    <p class="abcd">否定偽類選擇符 not(s)</p>
    <p>否定偽類選擇符 not(s)</p>
    

超鏈接的偽類

  • a:link{}
    設(shè)置超鏈接a在未被訪問前的樣式愿伴。

  • a:visited{}
    設(shè)置超鏈接a在其鏈接地址已被訪問過的樣式。

  • a:hove{}
    設(shè)置元素在其鼠標(biāo)懸停時的樣式电湘。

  • a:active{}
    設(shè)置元素在被用戶激活(在鼠標(biāo)點(diǎn)擊與釋放之間發(fā)生的事件)時的樣式隔节。

  • 注意點(diǎn)

    如果需要給超鏈接定義:訪問前,鼠標(biāo)懸停寂呛,當(dāng)前被點(diǎn)擊怎诫,已訪問這4種偽類效果,而又沒有按照一致的書寫順序贷痪,不同的瀏覽器可能會有不同的表現(xiàn)幻妓。
    超鏈接的4種狀態(tài),需要有特定的書寫順序才能生效劫拢。
    可靠的順序是:l(link)ov(visited)e h(hover)a(active)te, 即用喜歡和討厭兩個詞來概括

    #注意肉津,a:hover 必須位于 a:link 和 a:visited 之后,a:active 必須位于 a:hover 之后
    a:link{}
    a:visited{}
    a:hover{}
    a:active{}
    

偽元素

  • ::first-letter{ }
    設(shè)置對象內(nèi)的第一個字符的樣式尚镰。
  • ::first-line{ }
    設(shè)置對象內(nèi)的第一行的樣式阀圾。
  • ::before
    1.設(shè)置在對象前(依據(jù)對象樹的邏輯結(jié)構(gòu))發(fā)生的內(nèi)容。
    2.用來和content屬性一起使用狗唉,并且必須定義content屬性
  • ::after
    1.設(shè)置在對象后(依據(jù)對象樹的邏輯結(jié)構(gòu))發(fā)生的內(nèi)容初烘。
    2.用來和content屬性一起使用,并且必須定義content屬性
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末分俯,一起剝皮案震驚了整個濱河市肾筐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缸剪,老刑警劉巖吗铐,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杏节,居然都是意外死亡唬渗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門奋渔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來镊逝,“玉大人,你說我怎么就攤上這事嫉鲸∨と剩” “怎么了次慢?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵骨稿,是天一觀的道長。 經(jīng)常有香客問我狸眼,道長,這世上最難降的妖魔是什么浴滴? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任拓萌,我火速辦了婚禮,結(jié)果婚禮上巡莹,老公的妹妹穿的比我還像新娘司志。我一直安慰自己,他們只是感情好降宅,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布骂远。 她就那樣靜靜地躺著,像睡著了一般腰根。 火紅的嫁衣襯著肌膚如雪激才。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天额嘿,我揣著相機(jī)與錄音瘸恼,去河邊找鬼。 笑死册养,一個胖子當(dāng)著我的面吹牛东帅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播球拦,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼靠闭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了坎炼?” 一聲冷哼從身側(cè)響起愧膀,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谣光,沒想到半個月后檩淋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萄金,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年蟀悦,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氧敢。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡日戈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出福稳,到底是詐尸還是另有隱情涎拉,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布的圆,位于F島的核電站鼓拧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏越妈。R本人自食惡果不足惜季俩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望梅掠。 院中可真熱鬧酌住,春花似錦、人聲如沸阎抒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽且叁。三九已至都哭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逞带,已是汗流浹背欺矫。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留展氓,地道東北人穆趴。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像遇汞,于是被迫代替她去往敵國和親未妹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355