CSS 权重

开发中会使用很多CSS,页面中引入common的,在引入page specific的,有的时候经常会出现样式覆盖问题,简单粗暴的方法就是在想要展示的CSS上应用!important,但是不推荐这样做,只要知道CSS的优先级和权重,我们就可以写出高质量的CSS代码。

CSS权重由四个数字按 a-b-c-d 这样连接起来表示。

  • 如果声明来自于“style”属性,则记为 1,否则记为 0 (= a)
  • 记为选择器中 ID 属性的个数 (= b)
  • 记为选择器中其他属性和伪类的个数 (= c)
  • 记为选择器中元素名称和伪元素的个数 (= d)

例子:

*             {}  /* a=0 b=0 c=0 d=0 -> specificity = 0,0,0,0 */
li            {}  /* a=0 b=0 c=0 d=1 -> specificity = 0,0,0,1 */
li:first-line {}  /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */
ul li         {}  /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */
ul ol+li      {}  /* a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3 */
h1 + *[rel=up]{}  /* a=0 b=0 c=1 d=1 -> specificity = 0,0,1,1 */
ul ol li.red  {}  /* a=0 b=0 c=1 d=3 -> specificity = 0,0,1,3 */
li.red.level  {}  /* a=0 b=0 c=2 d=1 -> specificity = 0,0,2,1 */
#x34y         {}  /* a=0 b=1 c=0 d=0 -> specificity = 0,1,0,0 */
style=""          /* a=1 b=0 c=0 d=0 -> specificity = 1,0,0,0 */

注意:这里所列的情况不包含!important。

参考资料:

https://my.oschina.net/anna153/blog/377259

原文地址:https://www.cnblogs.com/gogolee/p/6635479.html