浏览器是如何处理 css 样式声明冲突的——层叠(权重计算)

23 阅读1分钟

补充说明: css 元素选择器的种类:

  • 元素选择器

  • id 选择器

  • 类选择器

  • 通配符选择器(*选中所有元素)

  • 属性选择器(根据属性名和属性值选择元素)

  • 伪类选择器(选中某些元素的某种状态)

    • link:超链接未选中
    • visited:超链接访问过的状态
    • hover:鼠标悬停的状态
    • active:激活状态(鼠标按下的状态)

爱恨法则

  • 伪元素选择器: before、after

一、比较重要性

重要性从高到低排序如下:

  1. !important 样式
  2. 普通样式(我们写的样式)
  3. 浏览器默认样式

二、比较特殊性

选择器选中的范围越窄就越特殊。

通过选择器计算出一个 “四位数” (0,0,0,0),这个数越大,特殊性越高

  • 千位:内联样式记为 1,否则为 0;
  • 百位:选择器中所有 id 选择器的数量和;
  • 十位:选择器中所有类选择器、属性选择器及伪类选择器的数量和;
  • 个位:选择器中所有元素选择器以及伪元素选择器的数量和。

三、比较源次性

代码书写靠后的胜出。

经过上面三个步骤之后,肯定只有一个样式会被渲染。