CSS特异性是一组规则,当多个声明冲突相同元素时,浏览器应用了哪些样式声明。使用四部分排名系统计算CSS选择器的特异性,其中不同类型的选择器具有不同的权重:
1,0,0,0
表示。这意味着任何内联样式都将覆盖外部或内部样式表中定义的任何样式,除非!important
。0,1,0,0
表示。例如, #navbar
的特异性为0,1,0,0
。0,0,1,0
。示例包括.btn
, [type="text"]
和:hover
。0,0,0,1
。示例包括div
, p
和::before
。比较特异性时,将从左至右进行比较。例如,特异性为0,1,0,0
的选择器将始终赢得特异性为0,0,1,0
的选择器。如果两个选择器具有相同的特异性,则将应用CSS代码后面出现的特异性。
几个因素影响CSS选择器的特异性:
div#navbar
将元素选择器( div
)与ID选择器( #navbar
)组合在一起,从而获得0,1,0,1
的特异性。!important
:虽然不是传统的特异性计算意义上的一个因素,但使用!important
可以覆盖任何特异性规则,从而使其成为强大(尽管不建议定期使用)工具。为了覆盖具有更高特异性的CSS样式,您可以采用几种策略:
.btn
(特异性0,0,1,0
),则可以使用.container .btn
(特异性0,0,2,0
)或#navbar .btn
(特异性0,1,1,0
)。#navbar
具有比.navbar
更高的特异性。!important
:作为最后的手段,您可以使用!important
声明来覆盖其他样式。例如, color: blue !important;
将覆盖该元素的任何其他color
声明。但是,使用!important
是,通常会灰心,因为它可能导致维护问题。是的,您可以使用!important
。当属于!important
,无论选择器的特异性如何,它都会覆盖同一属性的任何其他声明。
但是,要考虑的重要含义:
!important
是您的CSS难以维护。如果多个开发人员正在从事同一项目,他们可能不知道现有的!important
声明,导致意外行为。!important
是,开发人员添加了越来越多的!important
声明以覆盖以前的声明,这是适得其反的,并且导致了难以控制的CSS。!important
可能会破坏CSS继承的正常流动,从而更难预测样式如何级联。!important
是与CSS最佳实践抗衡,该实践倡导结构良好的模块化CSS,可以轻松管理,而无需诉诸这样的替代。总而言之,尽管!important
是在特定情况下(例如重叠的第三方图书馆样式)是一个有用的工具,但应谨慎使用。一种更好的方法是在必要时使用更具体的选择器来最大程度地减少对此类覆盖的需求的方式构建CSS。
以上是CSS特异性如何计算?的详细内容。更多信息请关注PHP中文网其他相关文章!