选择器权重计算

236 阅读1分钟

不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低选择器样式

继承 < 通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important

important相关:

  1. !important写在属性值的后面,分号的前面!
  2. !important不能提升继承的优先级,只要是继承优先级最低!
  3. 实际开发中不建议使用 !important 。

实际操作的方法:

  1. 先判断当前的选择器最终是否选择到当前要比较的元素,如果没选择到,看他是不是继承的,如果两个要比较优先级的元素都是继承,那么首先要比较他们两个继承的层级,谁的层级高(谁是爷爷,谁是爹,爷爷层级高)谁先生效,如果层级一样,那么再计算层级的权重。还有一点如果是继承的话,比方说a标签,可能不会继承父标签的颜色,而会显示它内部的预置蓝色,这个其实也很好理解,其实相当于内部又进行了重写了color相关的东西。

  2. 如果不是继承,最终直接选择到要比较的元素,先看有没有 !important,如果有的话他的层级最高,否则按照要进行权重计算了,权重计算要按照 (行内样式,id选择器,类选择器,标签选择器)从括号里面的行内样式开始比较,特别需要注意的是没有这里没有像普通数字那样进位的概念,100 id选择器并没有人家的一个行内样式级别高。