样式优先级和特异性

样式优先级和特异性

#resource / css #type / concept #status / growing

样式优先级和特异性


规则集

CSS规则集(Rule Set)是CSS语言的核心组成部分,它定义了如何格式化HTML文档中的特定元素。
规则集由选择器和声明块组成,是控制网页样式的基本单位。

选择器

选择器类型语法示例作用描述优先级权重(数值)
元素选择器div选择所有指定 HTML 标签的元素(如所有 <div>)。1
类选择器.class-name选择所有具有指定类名的元素(如 <div class="class-name">)。10
ID 选择器#id-name选择具有指定 ID 的唯一元素(如 <div id="id-name">)。100
属性选择器[type="text"]选择具有指定属性和值的元素(如 <input type="text">)。10
伪类选择器:hover选择元素的特定状态(如鼠标悬停时的状态)。10
伪元素选择器::before选择元素的特定部分(如在元素前插入内容)。1
通配符选择器*选择页面中的所有元素。0
后代选择器div p选择某元素内部的所有指定后代元素(如 <div> 内的所有 <p>)。权重累加(如 1+1)
子元素选择器div > p选择某元素的直接子元素(如 <div> 的直接子元素 <p>)。权重累加
相邻兄弟选择器div + p选择紧接在某元素后的第一个兄弟元素(如 <div> 后的第一个 <p>)。权重累加
通用兄弟选择器div ~ p选择某元素后的所有兄弟元素(如 <div> 后的所有 <p>)。权重累加
群组选择器div, .class, #id同时选择多个元素(如所有 <div>、类名 .class 和 ID #id 的元素)。独立计算,取最高值
内联样式<div style="color: red">直接在 HTML 标签内写的样式。1000
!importantcolor: red !important;强制覆盖其他样式规则(慎用)。优先级最高

伪类和伪元素的区别

伪类(Pseudo-class):
用于选择元素的特定状态或条件
例如用户交互(悬停、点击)或文档结构(第一个子元素)。
它不创建新元素,而是对现有元素的补充。
示例::hover、:active、:nth-child()

伪元素(Pseudo-element):
用于创建不在DOM树中的虚拟元素,并为其添加样式。
它模拟了一个新的元素,如首字母或前后插入内容。
示例:::before、::first-line、::selection

特异性和优先级

当多个规则集应用于同一个元素时,CSS通过**特异性(Specificity)和优先级(Priority)**决定哪个规则生效。
当特异性相同时,后定义的规则会覆盖先定义的规则。

特异性为不同选择器的权重值
优先级为从高到底的优先顺序

  • 内联样式(HTML 元素上的 style) 每个加 1000 分
  • ID 选择器(#id) 每个加 100 分
  • 类选择器、属性选择器、伪类选择器(.class、[attr=value]、:hover)
    每个加 10 分
  • 元素选择器和伪元素选择器(div、::before)
    每个加 1 分
  • 通配符选择器、后代选择器、子选择器等(*、div p、div > p)

优先级相同,后出现的样式生效

高级规则集特性

@规则

  • @import
  • @meida
  • @keyframes

自定义属性

:root {
  --main-color: #06c;
  --padding: 15px;
}

.element {
  color: var(--main-color);
  padding: var(--padding);
}
创建于 2025/1/1 更新于 2026/5/27