选择器特征
- 继承(父节点定义的样式会被子节点继承)
- 优先级(不同的选择器之间存在优先级)
- 层叠(层叠就是对一个元素多次设置同一个样式,这将使用最后一次设置的属性值。)
选择器分类
- 标签选择器(p,div)
- 类选择器(class名)
- ID选择器(id名)
- 全局选择器(* and so on)
- 组合选择器(p a{color: red})
- 后代选择
- 群组选择器
- 继承选择器
- 伪类选择器
- 字符串匹配的属性选择符(^ $ *三种,分别对应开始、结尾、包含)
- 子选择器
- CSS相邻兄弟选择器器
选择器优先级
!important > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
实际应用中,选择器优先级权重的计算
对于单个选择器的运用,我们容易知道选择器的优先级,但在实际的场景中,更多的是选择器的组合使用;因此,我们需要学习如何计算选择器的权重,以此来确定选择器的优先级。
选择器的权重计算,遵循ABCD法则,其中ABCD分别表示四类选择器的权重,对应关系如下:
- A类: 行内选择符
- B类: ID选择符
- C类: 类选择符/属性选择符/伪类选择符
- D类: 元素选择符/伪元素选择符
单个选择器的初始权重(A,B,C,D)的表示为(0,0,0,0),如果这个选择器是一个行内选择器,其权重则表示为(1,0,0,0),如果是一个ID选择器,则表示为(0,1,0,0)。
对于组合的选择器,将各个组合选择器的权重,按ABCD对应位相加,便得到组合选择器的权重。将权重按照高位A到低位D的顺序比较(高位相同比低位),就能计算组合选择器的优先级了。
建议与扩展
- 在选择器的运用中,建议采用低权重原则,可充分发挥CSS的复用性、继承性、组件化和模块化的优点。
- 选择器解析原理(阅读)