在CSS中,选择器权重的计算只针对指定样式(当前元素),并不可以用于继承样式。
我们来看一个“权重计算”的例子就知道了:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> #outer p{ /*权重=100+1=101*/ color: red; } #outer .inner{ /*权重=100+10=110*/ color: green; } #outer p strong{ /*权重=100+1+1=102*/ color: blue; } #outer p span strong{ /*权重=100+1+1=103*/ color: purple; } </style> </head> <body> <div id="outer"> <p class="inner"> <span><strong>朱绪博客</strong></span> </p> </div> </body> </html>
在浏览器上预览效果,朱绪博客这几个字的颜色是purple(紫色)。
咦?为什么是紫色呢?
明明”#outer .inner{}“的权重是最高的,文本颜色应该为green才对呀!
有的小伙伴之所以会出现这种疑问,原因在于没有真正理解”指定样式冲突“是怎么一回事。
指定样式冲突,就是指”当前元素“的样式发生冲突。
这个例子中,我们所针对的当前元素其实是strong,而#outer .inner{}针对的元素是p(strong的祖先元素),而不是strong。
准确来讲,倘若当前元素是strong,那么“#outer .inner{}”和“#outer p”都属于继承样式。
在继承样式中,我们是不可以用选择器权重这一套东西来计算的。