CSS三大特性及权重问题

159 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

继承性

CSS的某些属性具有继承性(Inherited):

  • 如果一个属性具备继承性, 那么在该元素上设置后, 它的后代元素都可以继承这个属性;

  • 当然, 如果后代元素自己有设置该属性, 那么优先使用后代元素自己的属性

注意:

  • 常见的font-size/font-family/font-weight/line-height/color/text-align都具有继承性;

  • a 标签的文字颜色和下划线是不会继承 父元素的属性的,也不能被继承

  • h 标签的文字大小不能被继承,也不能继承父元素的

应用场景:用于设置网页上的共性信息,例如:字体大小,颜色等。常:body{}

层叠性

是浏览器处理冲突的一个能力

CSS(Cascading Style Sheet)的翻译是层叠样式表,什么是层叠呢?

  • 对于一个元素来说, 相同一个属性我们可以通过不同的选择器给它进行多次设置;

  • 那么属性会被一层层覆盖上去;

  • 但是最终只有一个会生效;

那么多个样式属性覆盖上去, 哪一个会生效呢?

  • 判断一: 选择器的权重, 权重大的生效, 根据权重可以判断出优先级;(后面说)

  • 判断二: 先后顺序, 权重相同时, 后面设置的生效;

优先级

  • 如果都是间接选中(继承),那就谁离目标近就听谁的

  • 如果都是直接选中,并且是相同类型选择器,那就谁写在后面就听谁的

  • 如果是直接选中,并且不是相同类型的选择器,那么就按选择器的优先级来。选择器的优先级如下:id>类>标签>通配符>继承>浏览器默认

关于:!important

作用:提升某个直接选中标签的选择器的某个属性的优先级,可以将被指定的属性的优先级提升到最高。

注意:只能用于直接选中,对间接选中不起作用

p { 
  color: #31c27c !important;
}

权重问题

按照经验,为了方便比较CSS属性的优先级,可以给CSS属性所处的环境定义一个权值(权重)

  • !important:10000

  • 内联样式:1000

  • id选择器:100

  • 类选择器、属性选择器、伪类:10

  • 元素选择器、伪元素:1

  • 通配符:0

作用:当多个选择器混合使用时,我们可以通过计算权重来判断优先级