zoukankan      html  css  js  c++  java
  • CSS:权重和层叠规则决定了其优先级

    来源:http://www.ido321.com/1063.html

     

    首先,给大家看一篇关于CSS优先级的示例:http://www.ido321.com/76.html

    一、基本的优先级规则

            比较同一级别的个数,数量多的优先级高,如果相同即比较下一级别的个数,至于各级别的优先级如下:

             important > 内联 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪对象 >  通配符 > 继承

    二、CSS权重规则

           在《页面重构中的模块化设计》中提到,影响CSS样式权重,有两个重要因素:

                A:样式的优先级跟样式定义的顺序有关

                B:权值的大小跟选择器的类型和数量有关

           一般来说,在同一个CSS文件中,如果有两个同名的样式,则后定义的会覆盖先定义的。选择器类型的优先级见(一)。

           那么,CSS的权重是怎么算的呢?

           一个selector的权重表示方式:0.0.0.0,按照计算规则给每位填充数字,对应位置相等,则比较下一位。

           权重的计算规则如下:(为方便,用A.B.C.D代替各位置的值)

            1、内嵌样式:A=1,B=C=D=0(即1.0.0.0)

              2、ID样式:selector中带几个ID,第2位就加几个1 如#header{color:red},就是A=C=D=0,B=1(即0.1.0.0)

              3、类,伪类,以及属性的个数就是第三位的值:

                    .a.b[type="text"]:hover{},选择器中有2个类,1个属性,1个伪类,所以它的第3位为4, A=B=D=0,C=4,(即0.0.4.0)

               4、伪元素和标签元素的个数就是第四位的值

                     p:first-letter,有一个标签元素p和伪元素first-letter,值为2,A=B=C=0,D=2(即0.0.0.2)

               5、通配符和继承得到的CSS属性对权重没有影响

    三、几个示例

            针对以上,看以下几个示例

             1、.a .b .c {color:red;}   //0.0.3.0   说明:只有三个类

             2、*{…}         //0.0.0.0    说明:通配符对权重没有影响

             3、.a .b a {color:green} //0.0.2.1     说明:两个类和一个标签

             4、#hid {color:black;}   //0.1.0.0  说明:只有一个ID

    下一篇:HTML 5 History API的”前生今世”


  • 相关阅读:
    补充下前期的信息收集
    上传到github
    burp添加插件
    github加速
    bestphp's revenge[详解]
    [网鼎杯 2018]Comment
    UNCTF2020
    CTFshow web入门 (php特性)
    CTFshow web入门 (文件包含)
    CTFshow web入门 (爆破)
  • 原文地址:https://www.cnblogs.com/ido321/p/4037019.html
Copyright © 2011-2022 走看看