[CSS] 级联与特异性

简介: 这篇内容介绍了CSS样式表的优先级规则。优先级由`!important`、选择器特异性(Specificity)和声明来源决定。特异性计算涉及ID、类和标签的数量,形成三元组进行比较。当特异性相同时,按代码顺序后规则覆盖前规则。建议避免过度使用`!important`以保持代码可维护性,并利用特异性解决优先级问题,作者样式表通常放在最后。

样式表IMPORTANCE比较

优先级由上往下递减,如果重要性一致,则对比选择器的特异性 Specificity,也叫“具体程度”.

  1. 用户声明的!important
  2. 作者声明的!important
  3. 作者样式表
  4. 用户样式表
  5. 浏览器默认样式表

特异性 Specificity

当有多条冲突的CSS规则指向同一元素,则浏览器会计算特异性选择更具体的规则。

如果特异性相同,则按照代码顺序,靠后的规则覆盖前面的规则。

特异性的计算

计算下面三种情况的数量,并形成一个三元数。

  1. IDs
  2. 类,伪类,属性
  3. 标签,伪元素

案例

  1. .button:(0, 1, 0)
  2. nav#nav div.pull-right .button:(1, 2, 2) 一个ID,两个类,两个标签
  3. a:(0, 0, 1) 仅一个标签
  4. #nav a.button:hover:(1, 2, 1)

优先级比较

从左往右比较,如果不同则直接得出优先级,如果相同则比较下一位。

(1,2,2)>(1,2,1)>(0,1,0)>(0,0,1)

如果均相同,则按照代码顺序决定。

级联与特异性总结

  • 使用!important标记的声明具有最高优先级;
  • 非必要不使用!important,因为它会导致代码可维护性很差;
  • 内联样式的优先级永远高于外部样式表;
  • 1个ID选择器的特异性高于包含1000个类的选择器;
  • 1个类选择器的特异性高于包含1000个元素的选择器;
  • 通配符 * 没有特异性,(0, 0, 0)
  • 应使用特异性解决问题(计算样式的优先级),而不是依赖代码的顺序;
  • 当使用第三方样式表的时候,最好将作者样式表置于最后。
相关文章
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
189 0
CSS选择器优先级(特异性)
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
130 0
CSS选择器优先级(特异性)
|
前端开发 容器
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
199 0
CSS选择器优先级(特异性)
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
169 0
CSS选择器优先级(特异性)
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
219 0
CSS选择器优先级(特异性)
|
11月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
832 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
685 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1160 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布