CSS选择器的权重问题

正文:

  css选择器的权重问题一直以来都是困扰我的一件事情。为了解决选择器能如期地修改样式,我总是在想要用的选择器前边加上多个选择器以提高优先级。可是这样做有个缺点,就是下次你要重新再修改样式时需要添加更高优先级的选择器。另一方面就是代码冗余的问题,盲目地添加选择器只会提高代码的混乱度。为此我重新系统地学习了一下关于各个选择器的权值。下面是各个选择器的权重:

通配选择符的权值 0,0,0,0
标签的权值为 0,0,0,1
类的权值为 0,0,1,0
属性选择的权值为 0,0,1,1 0,0,1,0
伪类选择的权值为 0,0,1,0
伪对象选择的权值为 0,0,0,1
ID的权值为 0,1,0,0
!important的权值为最高 1,0,0,0

  了解了各个选择器的权值后,就可以更加清晰地知道自己该用哪些选择器了。这里说一下选择器的使用规则,就是选择器的权值加到一起,权值大的优先。如果权值相同,后定义的优先。所以在使用选择器的时候,应进行适当的计算,避免css的重复定义以造成代码的冗余,还有就是不要一味地添加选择器的数量来来提高优先级。

其他福利:

  很多人本来就对选择器之前的权重关系拎不清,当下,各种CSS3伪类纷至沓来,更迷糊了。

  为了拯救我们这些劳苦命的的页面仔们,国外有人制作了一个很通俗易懂的,大鱼吃小鱼,小鱼吃小虾,小虾吃泥巴的CSS选择器类型与权重关系图:

参考文章:http://www.zhangxinxu.com/wordpress/2012/08/256-class-selector-beat-id-selector/

谢谢你请我吃糖果