1.层叠性
概念:
所谓层叠性是指多种css样式的叠加
是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉
原则:
样式冲突,遵循的原则就是就近原则。那个样式离着结构近,就执行哪个样式
样式不冲突,不会层叠
2.继承性
概念:子标签会继承父级标签的某些样式,如文本颜色和字号。
注意:
- 恰当的使用继承可以简化代码,降低css样式的复杂性。
- 子元素可以继承父元素的样式:text-,font-,line-这些开头的可以继承,以及color属性
3.优先级
概念:
定义css样式时,经常出现两个或者更多规则应用在同一元素上,此时
- 选择器相同,则执行层叠性
- 选择器不同,就会出现优先级的问题
关于css权重,我们需要一套计算公式来计算,这个就是CSS Specificity(特殊性)
标签选择器 计算权重公式
继承或者* 0,0,0,0
每个元素(标签选择器) 0,0,0,1
每个类,伪类 0,0,1,0
每个ID 0,1,0,0
每个行内样式style="" 1,0,0,0
每个!important 无穷大
- specificity用一个四位的数,更像四个级别
- 值从左往右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越
权重叠加
我们经常用交际选择器,后代选择器等,是有多个基础选择器组合而成,那么此时,就会出现权重叠加。就是一个简单的加法计算:
- div ul li --------->0,0,0,3
- .nav ul li --------->0,0,1,2
- a:hover --------->0,0,1,1
- .nav a --------->0,0,1,1
注意:
1.数位之间没有进制:比如0,0,0,5 + 0,0,0,5 = 0,0,0,10;而不是0,0,1,0;所以不会存在10个div赶上一个类选择器的情况
2.继承的权重为0(修改样式,一定要看该标签有没有被选中:
(1) 如果选中了,那么以上面的公式来计算权重。
(2) 如果没选中,那么权重为0,以为继承的权重为0
)
3.如果权重相同,则会根据层叠性,就近原则