1. 程式人生 > >對CSS選擇器的一些學習總結

對CSS選擇器的一些學習總結

1.選擇器的分組和繼承

分組
你可以對選擇器進行分組,這樣,被分組的選擇器就可以分享相同的宣告。用逗號將需要分組的選擇器分開。在下面的例子中,我們對所有的標題元素進行了分組。所有的標題元素都是綠色的。

h1,h2,h3,h4,h5,h6 {
  color: green;
  }

繼承
根據 CSS,子元素從父元素繼承屬性。但是當你不希望子元素繼承父元素的屬性時該怎麼做呢?例如,在下方程式碼片段中你不希望 “Verdana, sans-serif” 字型被所有的子元素繼承,又該怎麼做呢?比方說,你希望段落的字型是 Times。沒問題。建立一個針對 p 的特殊規則,這樣它就會擺脫父元素的規則:

body  {
     font-family: Verdana, sans-serif;
     }

td, ul, ol, ul, li, dl, dt, dd  {
     font-family: Verdana, sans-serif;
     }

p  {
     font-family: Times, "Times New Roman", serif;
     }

2.派生選擇器

通過依據元素在其位置的上下文關係來定義樣式,你可以使標記更加簡潔。
在 CSS1 中,通過這種方式來應用規則的選擇器被稱為上下文選擇器 (contextual selectors),這是由於它們依賴於上下文關係來應用或者避免某項規則。在 CSS2 中,它們稱為派生選擇器,但是無論你如何稱呼它們,它們的作用都是相同的。
派生選擇器允許你根據文件的上下文關係來確定某個標籤的樣式。通過合理地使用派生選擇器,我們可以使 HTML 程式碼變得更加整潔。
比方說,你希望列表中的 strong 元素變為斜體字,而不是通常的粗體字,可以這樣定義一個派生選擇器:

li strong {
    font-style: italic;
    font-weight: normal;
  }
<p><strong>我是粗體字,不是斜體字,因為我不在列表當中,所以這個規則對我不起作用</strong></p>

<ol>
<li><strong>我是斜體字。這是因為 strong 元素位於 li 元素內。</strong></li>
<li>我是正常的字型。</li>
</ol>

3.偽類選擇器

一個 CSS 偽類(pseudo-class) 是一個以冒號(:)作為字首,被新增到一個選擇器末尾的關鍵字,當你希望樣式在特定狀態下才被呈現到指定的元素時,你可以往元素的選擇器後面加上對應的偽類(pseudo-class)。你可能希望某個元素在處於某種狀態下呈現另一種樣式,例如當滑鼠懸停在元素上面時,或者當一個複選框被禁用或被勾選時,又或者當一個元素是它在 DOM 樹中父元素的第一個子元素時。例如,指定連結被訪問過後的顏色:

a{
	color:blue;
}
a:visited{
	color:red;
}

4.組合選擇器

選擇器組 A,B 匹配滿足A(和/或)B的任意元素(參見下方 同一規則集上的多個選擇器).
後代選擇器 A B 匹配B元素,滿足條件:B是A的後代結點(B是A的子節點,或者A的子節點的子節點)
子選擇器 A > B 匹配B元素,滿足條件:B是A的直接子節點
相鄰兄弟選擇器 A + B 匹配B元素,滿足條件:B是A的下一個兄弟節點(AB有相同的父結點,並且B緊跟在A的後面)
通用兄弟選擇器 A ~ B 匹配B元素,滿足條件:B是A之後的兄弟節點中的任意一個(AB有相同的父節點,B在A之後,但不一定是緊挨著A)

參考資料:MDN選擇器