CSS 選擇器

建議學(xué)習(xí)時長: 90分鐘
學(xué)習(xí)方式:深入

學(xué)習(xí)目標(biāo)

  • 知道什么是 CSS 選擇器。
  • 知道如下選擇器的寫法,對哪些元素生效和瀏覽器兼容性:通配選擇器,元素選擇器,id選擇器,類選擇器,群組選擇器,層次選擇器,子元素選擇器,偽類選擇器中的 :hover,:active,:focus,:nth-child,屬性選擇器。
  • 知道選擇器的權(quán)重/優(yōu)先級。

詳細(xì)介紹

什么是選擇器

選擇器用來指定設(shè)置外觀的HTML元素。

選擇器類型

通配選擇器

選擇所有HTML元素。用 *。如

* {
  margin:0;
}

元素(element)選擇器

根據(jù)元素的名稱選元素。用標(biāo)簽名詞
如,要讓所有p元素的文字變?yōu)榧t色,可使用

p {color:#f00;}

id選擇器

根據(jù)元素的id選元素。用#id
注:頁面中不應(yīng)該存在id一樣的兩個或多個元素。

類選擇器

根據(jù)元素的類名來選元素。用.className
注:一個元素可以有多個類名,類名之間用空格分隔。如:

<p class="out-look pull-right">...</p>
<style>
.out-look{color:#F60;font-size: 16px;}
.pull-right{float: right;}
</style>

上面代碼中的p元素會同時應(yīng)用.out-look.pull-right里的樣式。

群組選擇器

將每一個選擇器匹配的元素集合并。用法: selector1,selector2,...,selectorN

派生選擇器

選擇元素下的所有元素。
語法 上下文選擇元素 元素
比方說,如果您希望只對 h1 元素中的 em 元素應(yīng)用樣式,可以這樣寫:

h1 em {color:red;}

子元素選擇器

選擇元素下的第一層子元素。
語法 父元素 > 子元素
瀏覽器兼容性:IE8+。

偽類選擇器

偽類選擇器分為動態(tài)偽類,UI偽類和:nth選擇器

動態(tài)偽類

因?yàn)檫@些偽類并不存在于HTML中,而只有當(dāng)用戶和網(wǎng)站交互的時候才能體現(xiàn)出來,動態(tài)偽類包含兩種,第一種是我們在鏈接中常看到的錨點(diǎn)偽類,如":link",":visited";另外一種被稱作用戶行為偽類,如“:hover”,":active"和":focus"。

錨點(diǎn)偽類

  • :link 鏈接沒有被訪問
  • :visited 鏈接被訪問后

用戶行為偽類

  • :hover 用戶把鼠標(biāo)移動到元素上面時的效果
  • :active 用戶點(diǎn)擊元素那一下的效果(正發(fā)生在點(diǎn)的那一下,松開鼠標(biāo)左鍵此動作也就完成了)
  • :focus 元素獲得焦點(diǎn)。通常是表單元素。

錨點(diǎn)元素可以設(shè)置:hover,:active,:link和:visited四個偽類,其寫的前后順序必須是Link--visited--hover--active,即愛恨原則LoVe/HAte。否則,有些偽類的效果會永遠(yuǎn)不能生效。

UI元素狀態(tài)偽類

我們把":enabled",":disabled",":checked"偽類稱為UI元素狀態(tài)偽類,這些主要是針對于HTML中的Form元素操作,最常見的比如我們"type="text"有enable和disabled兩種狀態(tài),前者為可寫狀態(tài)后者為不可狀態(tài);另外"type="radio"和"type="checkbox""有"checked"和"unchecked"兩種狀態(tài)

:nth選擇器

CSS3選擇器最新部分,有人也稱這種選擇器為CSS3結(jié)構(gòu)類

  • :fist-child選擇某個元素的第一個子元素;
  • :last-child選擇某個元素的最后一個子元素;
  • :nth-child()選擇某個元素的一個或多個特定的子元素;
  • :nth-last-child()選擇某個元素的一個或多個特定的子元素,從這個元素的最后一個子元素開始算;
  • :nth-of-type()選擇指定的元素;
  • :nth-last-of-type()選擇指定的元素,從元素的最后一個開始計算;
  • :first-of-type選擇一個上級元素下的第一個同類子元素;
  • :last-of-type選擇一個上級元素的最后一個同類子元素;
  • :only-child選擇的元素是它的父元素的唯一一個了元素;
  • :only-of-type選擇一個元素是它的上級元素的唯一一個相同類型的子元素;
  • :empty選擇的元素里面沒有任何內(nèi)容

屬性選擇器

根據(jù)屬性來選元素。
語法 [屬性名=屬性值]
其中,

  • 屬性值為可選的。若缺省屬性值,則選擇包含該屬性的元素
  • 屬性值支持類似正則的寫法,如:
    • [abc^="def"]表示 選擇 abc 屬性值以 "def" 開頭的所有元素
    • [abc$="def"]表示 選擇 abc 屬性值以 "def" 結(jié)尾的所有元素
    • [abc*="def"]表示 選擇 abc 屬性值中包含子串 "def" 的所有元素

偽元素選擇器

  • :before 在元素之前添加內(nèi)容
  • :after 在元素之后添加內(nèi)容
  • :first-line 向文本的首行添加特殊樣式
  • :first-letter 向文本的第一個字母添加特殊樣式
  • ::-webkit-input-placeholder 設(shè)置 placeholder

選擇器權(quán)重

某條樣式的是否被采用,取決于:該樣式是否是同類樣式中,權(quán)重得分最大的。

各類選擇器的權(quán)重得分

  • 帶 !important 的規(guī)則得分是最高的
  • 行內(nèi)樣式(style="...")1000分
  • ID選擇器 100分
  • 類選擇器,偽類選擇器,屬性選擇器 10分
  • 標(biāo)簽選擇器,偽元素選擇器 1分
  • 通配選擇器 0分
  • 繼承和瀏覽器默認(rèn)的的樣式的得分是最低的

更多可查看 http://css-tricks.com/specifics-on-css-specificity/

更多學(xué)習(xí)資源

練習(xí)題

寫滿足以下條件的選擇器

  • id為img-list的子元素中類名為img-item的span元素
  • 類名不為not-normal-input的文本框(<input type="text">)元素的獲得焦點(diǎn)狀態(tài)
  • 在父元素中倒數(shù)第2個a元素
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 其實(shí)平時用得多的選擇器無非也就是那么幾個,時間久了,許多不常用的選擇器就慢慢忘記了。為了不讓自己忘記這些選擇器,今...
    盛夏晚清風(fēng)閱讀 1,875評論 0 5
  • 一、CSS選擇器常見的有幾種? 基本選擇器 通配選擇器~選擇文檔中所有的html元素,用一個*表示 元素選擇器~選...
    dengpan閱讀 978評論 0 3
  • CSS選擇器結(jié)構(gòu)邏輯圖 接下來按照結(jié)構(gòu)邏輯圖具體講解各個選擇器的作用及用法; 基本選擇器 基本選擇器主要有以下5類...
    FoolishFlyFox閱讀 576評論 0 8
  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨(dú)立于文檔元素的方式來指定樣式。該選擇器可以單獨(dú)使用,也...
    草鞋弟閱讀 2,485評論 0 1
  • 1.class 和 id 的使用場景? 兩者都能選取DOM節(jié)點(diǎn)并給DOM節(jié)點(diǎn)添加樣式,但是W3C標(biāo)準(zhǔn)里規(guī)定頁面中只...
    饑人谷_米彌輪閱讀 426評論 0 1