CSS 的 C 就是代表著層疊 Cascade 的意思,可以把它想成等級的概念,如下範例:
/* 等級 1 */
h1 {
color: red;
}
/* 等級 2 */
h1 span {
color: green;
}
/* 等級 3 */
h1 span span{
color: yellow;
}
在之後的選擇器我們會再更近一步的說明,目前只要知道層疊的意義即可,而近期新推出的層疊階層 Cascade Layer 是更進階的技術,在章節五的管理裡會再介紹。
在相同級聯、相同權重的情況下,最後定義的會是最終樣式,如下範例:
Inheritance,就有如字面意思,直接將父母親層級的樣式沿用,即稱為繼承,如下範例:
在這個範例中,<body> 已經有設定文字為藍色,所以他的子元素們都會繼承他的文字顏色,直到 <span> 又再次設定文字顏色為黑色。
其實我們已經使用過選擇器了,在這個篇幅我們會更近一步的學習更多的選擇器用法。
所謂的 CSS 選擇器,就是在 CSS 檔案內撰寫我們要「指定某個對象」樣式的這件事情,例如:
如果我們要對 <h1> 做樣式的話,我們至少有以下這些樣式可以執行:
id 與 class 不能以數字開頭命名!
也不可以全部都是數字!
在多個標籤與混合使用的範例,您會發現前者有空格,後者無空格,這是 CSS 的定義,說明如下:
接下來我們還要針對比較特別的選擇器進一步說明。
我們可以在 HTML 元素上加上已經被定義的屬性或是自行添加的屬性:
所以以下兩種寫法都可以得到相同的樣式結果:
在上例中,要完全等於才有辦法套用樣式,但在實務上,通常我們會有基本型與其延伸出的變化型需求,所以屬性選擇器還可以有更多樣的選擇方式:
因為太多了,所以不一一列舉,您可以至 w3school 觀看所有偽類與偽元素的選擇器。
在某些形況下,我們會希望由一個基礎樣式擴充出不同樣式,我們可以使用這樣的方式撰寫:
<h1> 會先找到紅色,之後又找到綠色,然後判斷綠色為最終樣式進而應用。為什麼會判斷綠色為最終樣式呢?
CSS 的最終樣式,取決於其重要的程度。在元素當中,我們可以為其增加 id 與 class 屬性,在 CSS 當中則有各式選擇器、偽類、!important、inline style 會影響權重,總的來說,可以下圖來表示重要程度:
可以將權重分成五個數字,其構成為 !important - inline style - id - class - element,越左邊代表重要程度越大。例如:h1 + p::first-letter 可分成 h1、p、與 ::first-letter,而這三個都是屬於最右邊的數字所以就會是 0-0-0-0-3。
而 *、+、>、~ 和否定則不影響權重。
如果我們 CSS 寫錯了,或是瀏覽器不支援,
該 CSS 將會被忽略,也就是不管它,當作沒有這一個東西存在,也就不會算進去權重裡。
通常我們會利用工具來檢驗沒有使用到/沒有作用的 CSS 以提高效能。
善用選擇器將會讓效能、維護性、可讀性、易用性提高非常多,請務必練習各種選擇器的方式。
線上有很多 CSS 選擇器的遊戲網站挑戰看看,增強選擇的功力。
Last updated