上一篇,主要介绍了 HTML 扩展内容;部分,包含以下内容:
从本篇开始,进入 CSS 选择器部分的介绍;
当项目结构比较复杂时,容易出现一个元素同时被添加多个样式的情况
这时可能会出现问题:明明写好的样式却被覆盖掉了。。。那么,CSS 样式覆盖的问题,是否会遵循某种规律呢?
这里就涉及到选择器的权重和优先级的概念;
本篇,将介绍 CSS 选择器的权重和优先级;
MDN:CSS 优先级
权级 | 权值 | 选择器 | 备注 |
---|---|---|---|
0级 | 0000 | 通配选择器 | 通配选择器(* )、选择符(+ 、> 、~ 、空格、或)、not |
1级 | 0001 | 元素选择器 | 元素、关系、伪元素,如:div 、p ; |
2级 | 0010 | class 选择器 | 类选择器、属性选择器、伪类,如:.content 、:hover ; |
3级 | 0100 | id 选择器 | 如:#content ; |
4级 | 1000 | 内联选择器 | 如:style="" ; |
5级 | 10000 | !important | 不推荐在项目中使用 |
总结一下,以下选择器对优先级没有影响:
*
;+
、>
、~
、' '
;:not()
;(注意,在:not()
内部声明的选择器会影响优先级)CSS 优先级的计算遵循以下规则:
备注:
权重顺序:
!important > 内联样式 > id 选择器 > class 选择器 > 标签选择器 > 通配符 > 继承 > 浏览器默认;
CSS 选择器的权重和优先级的考察,一般会给出一段代码,问最终显示的效果,即判断谁覆盖了谁,为什么;
todo:面试题
本篇,主要介绍了 CSS 选择器部分,主要涉及一下几点:
下一篇,介绍 CSS 选择器伪类和伪元素;