CSS样式层叠和特殊性
层叠
同一个元素可以设置多个样式,就会有冲突,用层叠来解决样式冲突;
层叠给每个规则设置了重要度:
- 标有 ! important 的用户样式;
- 标有!important 的作者样式;
- 作者样式;
- 用户样式;
- 浏览器样式。
特殊性:
特殊性决定样式次序,具有特殊性的规则优于一般选择器。特殊性相同,位于后者的规则胜出。给每个规则分配一个数字,将数字加在一起,就是样式的特殊性。特殊性的计算不以10为基数,一个规则的选择器往往少于10个,以10基数比较特殊性更为方便些。
选择器的特殊性分为4个等级:
选择器 | a | b | c | d | 10进制 |
行内样式 style="" | 1 | 0 | 0 | 0 | 1000 |
ID选择器 #container{} | 0 | 1 (ID选择器的总数) | 0 | 0 | 0100 |
类、伪类、属性选择器 | 0 | 0 | 1(类、伪类、属性选择器 的总数) | 0 | 0010 |
元素选择器、伪元素选择器 | 0 | 0 | 0 | 1(元素选择器、伪元素选择器 ) | 0001 |
通用选择器 | 0 | 0 | 0 | 0 | 0000 |
如果某个样式没有起作用,很可能是特殊性出现冲突。就在规则添加父元素ID,提高特殊性。就很快定位冲突的规则。尽量保持一般性样式非常一般,特殊性样式非常特殊,就不容易发生特殊性冲突了。
继承:后代元素继承父级元素的某些属性。 如颜色、字号。继承而来的特殊性为0。
元素的样式和父元素一样,那么把样式应用到父级元素更为简洁。
eg p,div,h1,h2,h3,ol,ul,li{color:black} → body{color:black}