[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选择器优先级(特异性)
153 0
CSS选择器优先级(特异性)
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
104 0
CSS选择器优先级(特异性)
|
前端开发 容器
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
163 0
CSS选择器优先级(特异性)
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
132 0
CSS选择器优先级(特异性)
|
前端开发
CSS选择器优先级(特异性)
CSS选择器优先级(特异性)
196 0
CSS选择器优先级(特异性)
|
6月前
|
存储 自然语言处理 前端开发
抖音快手小红书虚拟评论截图生成器,模拟对话制作工具,html+js+css
这是一款纯前端实现的多平台虚拟评论生成器,支持抖音、快手、小红书风格,适用于产品演示与UI设计。采用Vanilla JS与Flexbox布局,利用IndexedDB存储数据,CSS Variables切换主题。
|
6月前
|
存储 前端开发 安全
病历单生成器在线制作,病历单生成器app,HTML+CSS+JS恶搞工具
本项目为医疗病历模拟生成器,旨在为医学教学和软件开发测试提供数据支持,严格遵守《医疗机构病历管理规定》。
|
6月前
|
存储 前端开发 JavaScript
仿真银行app下载安装, 银行卡虚拟余额制作app,用html+css+js实现逼真娱乐工具
这是一个简单的银行账户模拟器项目,用于学习前端开发基础。用户可进行存款、取款操作,所有数据存储于浏览器内存中
|
6月前
|
前端开发 容器
处方单图片生成器, 处方单在线制作免费,js+css+html恶搞神器
这是一个电子处方模拟生成系统,使用html2canvas库实现图片导出功能。系统生成的处方单包含多重防伪标识,并明确标注为模拟数据,仅供学习
|
6月前
|
前端开发 JavaScript 容器
制作b超单生成器, 假怀孕b超单图片制作, p图医院证明【css+html+js装逼恶搞神器】
本资源提供一个适合用于熟人之间恶搞的工具,效果逼真,仅供学习参考与娱乐。包含前端技术学习要点:语义化布局、响应式设计、Flexbox、图片自适应