zoukankan      html  css  js  c++  java
  • 选择器优先级的权重计算

    计算过程

    1.W3C文档选择器权重的计算

    文档指出:

    A selector’s specificity is calculated for a given element as follows:

    • count the number of ID selectors in the selector (= A)
    • count the number of class selectors, attributes selectors, and pseudo-classes in the selector (= B)
    • count the number of type selectors and pseudo-elements in the selector (= C)
    • ignore the universal selector

    Examples:

    *               /* a=0 b=0 c=0 */
    li              /* a=0 b=0 c=1 */
    ul li           /* a=0 b=0 c=2 */
    ul ol+li        /* a=0 b=0 c=3 */
    h1 + *[REL=up]  /* a=0 b=1 c=1 */
    ul ol li.red    /* a=0 b=1 c=3 */
    li.red.level    /* a=0 b=2 c=1 */
    #x34y           /* a=1 b=0 c=0 */
    #s12:not(FOO)   /* a=1 b=0 c=1 */
    .foo :matches(.bar, #baz)
                    /* Either a=1 b=1 c=0
                       or a=0 b=2 c=0, depending
                       on the element being matched. */
    

    把权重分为了 A,B,C 三个级别,A > B > C , A,B,C 直接各自计算。也就是会优先计算 A 的权重,如果相等会计算 B 的权重,以此类推。

    相当时标签C, class类名B,  ID为A, 如#test .foo div   换算过来是 a=1 b=1 c=1

    <div class="test_wrap" id="test_wrap" data-show="true">
        <div class="test"></div>
        <p>taobao.com</p>
    </div>
    

    1:标签

    div { /*type selectors*/
        padding:1px;   /*a = 0 , b = 0 , c = 1*/
    }
    

    2.class类名

    .test_wrap{  /*class selectors*/
        padding:12px;  /*a = 0 , b = 1 , c = 0*/
    }
    

    3.标签 + 类名

    div .test{ /*type selectors + class selectors*/
        padding:123px;  /*a = 0 , b = 1 , c = 1*/
    }    
    

    4.class类名

    .test_wrap .test{ /* class selectors + class selectors */
        padding:1234px;   /*a = 0 , b = 2 , c = 0*/
    }
    

    5.ID

    #test_wrap { /*type selectors*/
        padding:100px;   /*a = 1 , b = 0 , c = 0*/
    }
    

    声明先后顺序

    当 A 、B 、C 所计算的权重都相等时(ABC三个值相等)相等时,后面声明的值将会是最终的计算值。

  • 相关阅读:
    2.1 maven配置多镜像地址
    6.4 SpringData JPA的使用
    4.3 thymeleaf模板引擎的使用
    java面试题整理
    eclipse配置运行时变量
    postman上传文件
    Python定义字符串、循环
    Charles抓包
    jmeter压测
    JMeter,postman
  • 原文地址:https://www.cnblogs.com/alantao/p/8671426.html
Copyright © 2011-2022 走看看