https://lovelacelee.github.io/cnTIL
This project is maintained by lovelacelee
Stylesheets cascade ——样式表层叠,简单地说CSS规则的顺序很重要。最后的一条规则生效。
有三个因素需要考虑,根据重要性排序如下,前面的更重要:
!important
的重要程度(可以用来覆盖所有优先级计算)一个选择器的优先级可以说是由四个部分相加 (分量),可以认为是个十百千 — 四位数的四个位数:
千位:如果声明在 style 的属性(内联样式)则该位得一分。这样的声明没有选择器,所以它得分总是1000。
百位:选择器中包含ID选择器则该位得一分。
十位:选择器中包含类选择器、属性选择器或者伪类则该位得一分。
个位:选择器中包含元素、伪元素选择器则该位得一分。
通用选择器 (*),组合符 (+, >, ~, ‘ ‘),和否定伪类 (:not) 不会影响优先级。 在进行计算时不允许进行进位,例如,20 个类选择器仅仅意味着 20 个十位,而不能视为 两个百位,也就是说,无论多少个类选择器的权重叠加,都不会超过一个 ID 选择器。
当多个规则有不同选择器对应相同的元素的时候需要使用哪个规则:
.main-heading {
color: read;
}
h1 {
color: blue;
}
<h1 class="main-heading">This is my heading</h1>
此时This is my heading
显示为红色,因为main-heading更具体地选择。
继承也需要在上下文中去理解,某些设置在父元素上的css属性是可以被子元素继承的,有些则不能。
CSS 为控制继承提供了四个特殊的通用属性值。每个css属性都接收这些值。
覆盖 !important
唯一的办法就是另一个 !important
具有 相同优先级 而且顺序靠后,或者更高优先级。