重新认识CSS的权重 [10]
- 溪梦 - CSS森林(CSS Forest)今天 大白 问了一个关于CSS权重的问题:. class的权重是10 标签权重是 1. 比如说 p span{} 权重是2. 如果11标签自选择器的组合的权重11,会不会覆盖 一个class选择器权重10的 样式. 在跟他的讨论中,重新整理了我对CSS权重的理解. 在《 样式的作用域──页面重构中的模块化设计(一) 》中有做过总结,其中提到比较重要的两点:.
今天 大白 问了一个关于CSS权重的问题:
关于选择器权重的问题 。class的权重是10 标签权重是 1 。比如说 p span{} 权重是2. 如果11标签自选择器的组合的权重11,会不会覆盖 一个class选择器权重10的 样式?
在跟他的讨论中,重新整理了我对CSS权重的理解。
在《 样式的作用域──页面重构中的模块化设计(一) 》中有做过总结,其中提到比较重要的两点:
- 权值的大小跟选择器的类型和数量有关
- 样式的优先级跟样式的定义顺序有关
在《 继承──页面重构中的模块化设计(三) 》的评论中 operafans 也提到了 标签选择器的权值永远都比一个类选器择器的权值低,无论有多少个 但一直以来都还是没能想通。
其实规则很简单: 比较同一级别的个数,数量多的优先级高,如果相同即比较下一级别的个数 ,至于各级别的优先级,大家应该已经很清楚了,就是:
important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 > 继承 > 通配符
这也就解释了为什么11个标签的定义会比不上1个类的定义,1个类加11个标签会比不上2个类的权重高。