css三大特性:层叠性、继承性、优先级

214 阅读2分钟

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.如果权重相同,则会根据层叠性,就近原则

>>>前端学习之路>>>