## :root 偽類
:root 偽類是匹配文檔的根元素,很多時候,根元素也就是 html 元素,用 root 偽類來匹配根元素,目的就是解決根元素不是 html 的場景,比如根元素是 svg 的時候。
root 偽類的使用場景,我們引入某些 UI 庫,很多時候,需要重置一些樣式,就可以使用 root 偽類,這樣就不擔心重置的樣式不生效了。因為偽類 root 的優先級更高。比如:
```css
:root {
overflow-y: auto;
scrollbar-gutter: stable;
}
```
另一種情況就是在 root 偽類內定義變量,比如:
```css
:root {
/* 顏色變量 */
--blue: #248600;
--red: #f461cc;
/* 尺寸變量 */
--layerWidth: 1100px;
}
```
因為在偽類 root 中定義變量,代碼的可讀性更好,所以有很多團隊都推薦偽類 root 負責定義變量,html 負責樣式。至于哪種方式好點,就得看看團隊的編碼規范了。
## :empty 偽類
:empty 偽類用來匹配空標簽。
但是這里的空標簽,標簽內不能有注釋、換行,否則不生效。
## :first-child偽類和:last-child偽類
first-child 偽類,匹配的是第一個元素,last-child 匹配最后一個元素。
## :only-child偽類
:only-child偽類,顧名思義,就是匹配沒有兄弟元素的元素。
## :nth-child()偽類和:nth-last-child()偽類
匹配指定序號的元素。它們有兩種參數類型:
第一種是:關鍵字的形式
1. odd:匹配第奇數個元素,如第1個元素、第3個元素、第5個元素
2. even:匹配第偶數個元素;
第二種是:函數符號的形式
1. An+B:其中A和B都是固定的數值
## :first-of-type偽類和:last-of-type偽類
:first-of-type表示當前第一個標簽類型的元素,:last-of-type偽類的語法和匹配規則與:first-of-type的類似