返回
CSS中的11个样式选择器与样式优先级计算
前端
2023-12-02 11:18:24
1. CSS 选择器
CSS 中有 11 种选择器,分别为:
- 通用选择器 (*)
- 元素选择器 (h1, p, div 等)
- 类选择器 (.class)
- ID 选择器 (#id)
- 属性选择器 ([attr=value])
- 伪类选择器 (:hover, :active 等)
- 伪元素选择器 (::before, ::after 等)
- 后代选择器 (A > B)
- 子选择器 (A > B)
- 相邻同胞选择器 (A + B)
- 通用选择器 (*)
2. 样式优先级
当多个样式规则匹配到同一个元素时,需要根据样式优先级来决定哪个样式规则生效。样式优先级由以下四部分组成:
- Specificity :选择器的特异性
- Importance :样式规则的重要性
- Position :样式规则的位置
- Order :样式规则的顺序
Specificity
选择器的特异性是通过计算选择器中各部分的权重来确定的。权重值越大,选择器的特异性就越高。权重值计算如下:
- ID 选择器:100
- 类选择器、伪类选择器和伪元素选择器:10
- 元素选择器和属性选择器:1
如果两个选择器的特异性相同,则比较样式规则的重要性。
Importance
样式规则的重要性可以是以下三个值之一:
- important :重要
- normal :普通
- inherited :继承
如果两个样式规则的重要性相同,则比较样式规则的位置。
Position
样式规则的位置是指样式规则在样式表中的位置。位于后面的样式规则优先级更高。
Order
如果两个样式规则的位置相同,则比较样式规则的顺序。顺序是指样式规则在样式表中出现的顺序。出现的顺序越靠前的样式规则优先级越高。
3. 样式优先级计算示例
以下是一个样式优先级计算的示例:
/* 样式规则 1 */
h1 {
color: red;
font-size: 20px;
}
/* 样式规则 2 */
.class {
color: blue;
font-size: 15px;
}
/* 样式规则 3 */
#id {
color: green;
font-size: 10px;
}
/* 样式规则 4 */
h1.class {
color: purple;
font-size: 5px;
}
如果将这四个样式规则应用到一个 <h1 class="class" id="id">
元素上,则样式优先级最高的样式规则是样式规则 4。这是因为样式规则 4 的选择器的特异性最高,为 110(100 + 10)。样式规则 1 的特异性为 10,样式规则 2 的特异性为 10,样式规则 3 的特异性为 110(100 + 10)。因此,样式规则 4 的优先级最高,样式规则 3 的优先级次之,样式规则 1 的优先级再次之,样式规则 2 的优先级最低。