CSS选择器的权重与优先级

作者在网上找了很久,找到的关于CSS选择器的权重的内容都大同小异,其中最核心的就是下图
在这里插入图片描述
把特殊性分为4个等级,每个等级代表一类选择器,每个等级的值为其所代表的选择器的个数乘以这一等级的权值,最后把所有等级的值相加得出选择器的特殊值。

4个等级的定义如下:

1、第一等:代表内联样式,如: style=””,权值为1000。
2、第二等:代表ID选择器,如:#content,权值为100。
3、第三等:代表类,伪类和属性选择器,如.content,权值为10。
4、第四等:代表类型选择器和伪元素选择器,如div p,权值为1。

计算方式就是,有多少加多少,最后值最大的为显示出来的css样式。

但是作者尝试了一下,发现有点问题。

 div#test0 div#test1 div#test2 div#test3 div#test4 div#test5 div#test6 div#test7 div#test8 div#test9 div#test10 h1{
        color: blue;
      }

按照上面的权重算法,上面的应该有1112,大于内联的1000,所以,h1应当显示blue,但是,实际上使用的,还是显示内联的颜色。程序代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
      *{
        margin:0;padding:0;border:0;
      }
      div#test0 div#test1 div#test2 div#test3 div#test4 div#test5 div#test6 div#test7 div#test8 div#test9 div#test10 h1{
        color: blue;
      }
    </style>
</head>
<body>
  <div id="test0">
    <div id="test1">
      <div id="test2">
        <div id="test3">
          <div id="test4">
            <div id="test5">
              <div id="test6">
                <div id="test7">
                  <div id="test8">
                    <div id="test9">
                      <div id="test10">
                        <h1 style="color: red;">h1</h1>
                        <h1>h1</h1>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

作者观点:css选择器的原则应当是越精准,权重越大,同种等级之间相加的数值才有比较的意义,不同等级,应选择显示等级小的。

猜你喜欢

转载自blog.csdn.net/LuckyMon/article/details/88422164