CSS 优先级
选择器你会写了。真实样式表里规则会撞车:两条规则瞄向同一元素、同一属性。浏览器不靠猜——看优先级(specificity);权重一样时,看文件里的书写顺序。
优先级是什么意思?
优先级是浏览器给选择器的权重。冲突时,对那条属性更重的选择器胜出。日常记住这把梯子:行内 style > id > class(以及属性 / 伪类)> element(以及伪元素)。单独的 * 和组合符本身不加权重。
排名一览
先背这个顺序。细节更多,但多数初学者的困惑靠这把梯子就能解。
📊 CSS 优先级排名(日常)
| 类型 | 示例 | 通常胜过 |
|---|---|---|
| 行内 style | style="color: red" |
样式表里几乎一切 |
| Id | #hero、#nav |
class 与 element |
| Class / 属性 / 伪类 | .card、[type="email"]、:hover |
element 选择器 |
| Element / 伪元素 | p、h1、::before |
仅更弱或同权规则(然后看源码顺序) |
class 胜过 element
标签选择器很宽。class 更精确——class 的颜色会赢。只有权重相等时顺序才重要。
class 胜过 element
cssp {
color: #334155;
}
.note {
color: #0f766e;
}
怎么读这场冲突?
对 <p class="note"> 两条都匹配。.note 是 class;p 是 element。class 赢 → 青绿文字。
id 胜过 class
id 比 class 更重。可复用外观优先用 class;id 留给真正唯一的钩子。
id 胜过 class
css.note {
color: #0f766e;
}
#title {
color: #9f1239;
}
为什么重要?
若 <h1 id="title" class="note"> 变成酒红,是 id 赢了——不是因为「感觉更重要」,而是权重更高。
权重相等 → 后面的规则赢
当两条规则优先级相同时,对那条属性,CSS 里更靠后的那条赢。
同权 — 源码顺序说了算
css.card {
border-color: #cbd5e1;
}
.card {
border-color: #0f766e;
}
打平时的习惯
两个选择器都是一个 class。第二条 .card 赢 → 青绿边框。若你想要第一种颜色,检查是否还有更强的选择器也匹配了。
组合选择器实战
选择器会组合:nav a.button:hover 比单独的 a 更强,因为加了 class 和伪类。不必每行都算分——问:有 id 吗?多了 class 吗?还是只有标签?
组合选择器胜过裸 element
cssa {
color: #334155;
}
nav a.button {
color: #0f766e;
}
关于 !important
!important 可以绕过普通优先级。它是灭火器,不是日常工具。滥用会让以后难改。先把结构和更清晰的选择器理顺。
好习惯
- 外观用 class;id 留给唯一钩子
- 卡住了?看每个选择器在梯子哪一格
- 同权 → 看文件里更靠后的规则
- 别为了「赢」堆很长的链——HTML 一变就断
!important放最后,别放最先
自己动手
- 页面:
<p class="note">你好</p>、<h1 id="title" class="note">标题</h1>,以及<nav>里的<a class="button">走</a>。 - 写 element 对 class(
p灰、.note青绿)——note 段落应为青绿。 - 加
#title { color: #9f1239; }——尽管有.note,标题应变酒红。 - 写两条
.card的border-color——后一条应赢。 - 可选:在 nav 链接上比较
a { … }与nav a.button { … }。
常见错误
- 以为「声明越多」优先级越高——不会
- 以为最后一个文件总能压过 id——更高权重仍然赢
- 把
#一切或!important当默认补丁 - 搞混梯子档位(把 class 当成 element)
- 忘记同权会回到源码顺序
小结
- 优先级决定同一属性上的冲突赢家
- 日常梯子:inline > id > class/属性/伪类 > element/伪元素
- 同权 → 后面的规则
- 外观用 class;id 与
!important少用 - 先看档位,再看顺序
- 用
p/.note/#title练到赢家一目了然
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部