样式表:stylesheet
为什么需要层叠
为什么需要 CSS 的层叠?
声明冲突:同一个样式,多次应用到同一个元素上 。比如:
- 自己写的声明和浏览器的默认声明;
- 自己制造声明冲突
层叠的作用:通过权重计算的方式,解决声明冲突的过程(浏览器自动解决)
层叠的过程
(一) 比较重要性
重要性从高到低:
作者样式表:开发者书写的代码
- 作者样式表中的!important样式(基本不会用它的)
a{text-decoration:none !important;}
- 作者样式表中的普通样式
- 浏览器默认样式表中的样式
(二) 比较特殊性
总体规则:选择器选中的范围越窄,越特殊
具体规则:通过选择器,计算出一个4位数(xxxx),每个数逢255进一
- 千位:如果是内联样式,记为1,否则为0
- 百位:等于选择器中所有id选择器的数量
- 十位:等于选择器中所有类选择器,属性选择器,伪类选择器的数量
- 个位:等于选择器中所有元素选择器,伪元素选择器的数量
/*0003*/
div ul a{
text-indent:0.5em;
}
/*0201*/
#mydiv #myul a{
text-indent:1em;
}
/*0210*/
#mydiv #myul .mylink{
text-indent:2em;
}
/*0211,它最大,就选它*/
#mydiv #myul a:link{
text-indent:3em;
}
(三) 比较源次序
- 代码书写靠后的输出
/*0210*/
#mydiv #myul .mylink{
text-indent:2em;
}
/*0210,就决定是你了皮卡丘*/
#mydiv #myul a:link{
text-indent:3em;
}
(四) 层叠的应用
- 重置样式表
书写作者样式表,覆盖浏览器默认样式
重置样式表 -> 浏览器默认样式表(之后再写一些样式表,覆盖重置样式表)
常见重置样式表的命名:normalize.css、reset.css、meyer.css
- 爱恨法则
排列先后:link > visited > hover > active