css的权重计算公式

149 阅读1分钟

场景:如果是复合选择器,此时需要通过权重叠加计算方法,判断最终哪个选择器优先级最高会生效

image.png

image.png 比较规则:

  1. 先比较第一级数字,如果比较出来了,之后的统统不看

  2. 如果第一级数字相同,此时再去比较第二级数字,如果比较出来了,之后的统统不看

  3. ……

  4. 如果最终所有数字都相同,表示优先级相同,则比较层叠性(谁写在下面,谁说了算!)

➢ 注意点:!important如果不是继承,则权重最高,天下第一

div #one {
  color: aqua;
  /* 0,1,0,1 */
  // 最大
}
.father .son {
  color: black;
  /* 0.0.1.0 */
}
.father p {
  color: yellow;
  /* 0.0.1.1 */
}
div p {
  color: tomato;
  /* 0.0.0.2 */
}
#father{
  color:blueviolet !important;
  /* 继承 最低*/
}
div#father.c1{
  color: coral;
  /* 继承 */
}

 <div class="father" class="c1">
    <p class="son" id="one" class="c2">我是子标签</p>
  </div>
  color: blue;
  //最大  没有继承
}
div {
  color: red;
}
  </style>
</head>
<body>
<div>
  <div>
    <div>
      什么颜色
    </div>
  </div>
</div>
  /* 行内  id  类   标签 */
  /* 权重相同此时比较层叠性 */
.c1 .c2 div {
  color: blueviolet;
  /* 0.0.2.1 */
}
div #box3 {
  color: chartreuse;
  /* 0.1.0.1 */
}
#box1 div {
  /* #box1 div后代 */
  color: tomato;
  /* 0.1.0.1 */   
  // 先级相同,则比较层叠性(谁写在下面,谁说了算所以tomato
}
  </style>
</head>
<body>
<div id="box1" class="c1">
  <div id="box2" class="c2">
    <div id="box3" class="c3">
      什么颜色
    </div>
  </div>
</div>
  /* 行内  id  类   标签 */
  /* 继承特殊情况 */
  div p {
    color: aqua;
    /* 都是继承。看基础能力谁高  所以是aqua */
  }
  .father {
    color: chartreuse;
    
  }

  </style>
</head>
<body>
<div class="father">
  <p class="son">
    <span>文字</span>
  </p>
</div>
</body>
  /* 行内  id  类   标签 */
  /* 继承特殊情况 */
 
  .father {
    color: chartreuse;
    
  }
  span {
    color: coral;
  }
.ii{
  color: crimson !important;
}
#dd{
  color: thistle;
}
  </style>
</head>
<body>
<div class="father">
  <p class="son">
    <span class="size" id="sun">文字</span>
  </p>
</div>
</body>