Skip to content

树结构伪类

:root

匹配文档根元素,在 html 中可以理解为就是 <html> 元素

1. 与 html 元素的区别

  • 选择器权重比 html 选择器要高
  • 约定俗成,html 选择器负责样式,:root 伪类负责 CSS 变量

:first-child 和 :last-child

:first-child 匹配第一个子元素

:last-child 匹配最后一个子元素

html
<ol>
  <li>内容</li>
  <li>内容</li>
  <li>内容</li>
</ol>
css
ol > :first-child { color: pink; }
ol > :last-child { color: skyblue; }

:only-child

匹配没有任何兄弟元素的元素

html
<div>
  <!-- 可以匹配 -->
  <p></p>
</div>
html
<div>
  <!-- 可以匹配,后面文本没有标签嵌套,是匿名文本,所以不影响 -->
  <p></p>删除
</div>

:nth-child 和 :nth-last-child

找到所有当前元素的兄弟元素,在其中匹配所有制定索引的元素

1. 从 1 开始排序

2. 奇偶

  • odd:匹配第数个元素,1、3、5...
  • even:匹配第数个元素,2、4、6...
  • 可以这么记忆:odd 是 3 个字母,所以匹配奇数;even 是 4 个字母,所以匹配偶数

3. An+B

  • n 可以理解为从 1 开始的自然序列(1,2,3,4...)
  • :nth-child(5n):匹配倍数为 5 的元素,5、10、15...
  • :nth-child(3n+4):匹配第4、7、10... 个元素
  • :nth-child(n+2):nth-child(-n+6):匹配 [2, 6] 的元素

:first-of-type 和 :last-of-type

匹配所有当前元素的同标签类型的兄弟元素,中的第一个(最后一个)元素

html
<div>
  <h4>标题</h4>
  <p>文本</p>
  <p>文本</p>
  <p>文本</p>
</div>
css
div p:first-of-type { color: pink; }
div p:last-of-type { color: skyblue; }

:only-of-type

示匹配唯一的标签类型的元素

:nth-of-type 和 :nth-last-of-type

找到所有当前元素的相同标签类型的兄弟元素,在其中匹配所有制定索引的元素

1. 和 :nth-child 用法相似,但 :nth-of-type 匹配相同标签类型的相邻元素