CSS级联问题与继承


前言

css级联问题容易产生困扰,有时候疑惑为什么这里写的css样式不能显示出来,这就关系到级联问题


一、级联产生的原因

可以这么理解级联,当给一个元素设置不同样式的时候,最终采取什么样式的解决方案

二、级联的优先级

①!important声明

优先级最大,当给一个元素设置的样式后面添加!important时,都会优先执行,但是不能多用,会改变级联中的工作方式。

② 特性值 (Specificity)

用特性值来衡量一个选择器,特性值越高,越优先选择那个样式,一般特性值分为1000,100,10,1,0.

1、行内样式表,style属性内特性值:1000,
2、id选择器特性值:100,
3、类选择器,属性选择器,伪类选择器特性值:10
4、标签选择器,伪元素选择器特性值:1
5、 空格、>、+、*(普通选择器)、~特性值:0

可以用这张图(来源于菜鸟教程)来表示:
CSS级联问题与继承

③代码顺序

当特性值一样时,采用就近原则,越靠近html的越优先。

继承

css可继承属性:font系列属性、文本系列属性、列表系列属性、cursor\visibility等等
css不可继承属性:margin\padding、border等等

总结

css的优先级,如果不太会的话很容易混淆、不知道为什么这里的样式用不了 ,写这个就是为了让自己能够记住。