• CSS优先级问题(转)


    1、特殊性
    首先来看一下这个例子将会发生的情形:
     

    .grape { color:Blue; }
    H1 { color: Red; }
    <h1 class="grape">Meerkat <em>Central</em></h1>


    H1和.grape都匹配上面的H1元素,那么到底应该使用哪一个呢?实践证明.grape是正确答案,把句子显示为蓝色。根据规范,一般的HTML元素选择符(H1,P 等)具有特殊性1,类选择符具有特殊性10,ID选择符具有特殊性100,值越大权重就越大,就优先选用。
     

     
    H1 { color: Red; }                  /* 特殊性 = 1 */    
    P EM { color: Blue; }               /* 特殊性 = 2  */
    .grape { color: Fuchsia; }            /* 特殊性 = 1 0 */
    P.bright { color: Yellow; }            /* 特殊性 = 11 */
    P.bright EM.dark{ color: Gray; }       /* 特殊性 = 12 */
    #ID01 { color: Red; }                /* 特殊性 = 100 */



    2、继承
    在特殊性的框架下,被继承的值具有特殊性0,也就是说任何显式声明的规则将会覆盖其继承样式,即便这条规则具有多高的权重。
     

     
    H1#ID01 { color: Red; }           /* 特殊性 = 101 */
    EM{ color: Gray; }             /* 特殊性 = 1 */
    <H1 ID="ID01>Meerkat <EM><Central</EM></H1>

    虽然ID选择符特殊性最高,但由于在特殊性的框架下,继承值只有特殊性0,因些Central会显示为Gray颜色。


    3、STYLE元素
    还有sytle元素在CSS下权值定义为100,尽管ID选择也一样,实际上style元素比ID具有更高的特殊性。
     

     
    #ID01 EM{ color: Gray; }
    <H1 ID="ID01">Meerkat <EM style="color: red;">Central</EM>!</H1>

    会显示为red颜色。

    4、重要性(!important)
    !important具最高特特性比如说1000,因此!important规则会覆盖内联STYLE属性的内容。
     

     
    H1{ color: red !important; }
    <H1 style="color:black;">Meerkat Central!</H1>

    将显示为RED颜色。

    一种特殊情形
     

     
    P#warn { color: Red !important; }
    EM { color: Black; }
    <p id="warn">This text is red, but <em>emphasized text is black.</em></p>

    虽然定义!important最高特殊性,但句子并没有全部显示为RED红色,为什么呢?也许我们得回头看看前面的规则,在前面的第二点继承中提“在特殊性的框架下,继承值只有特殊性0。”因此即便定义!important,继承里的特殊性也只有0,所以显示为特殊性为1的EM规则。

    权重顺序为:继承 => HTML普通选择符 => 类选择符 =>style元素 => !important

    5、层叠

         1) 若两条规则具有相同的权值、起源及特殊性,那在样式表中最后出现的规则优先。
       2) 任何位于文档中的规则都比引入的规则优先。
  • 相关阅读:
    分析java程序的命令总结jps,jstack
    Tomcat配置详解及tomcat的连接数与线程池
    Go入门练习题
    WebSocket的原理,及如何测试websocket是否连接成功
    day3-每天进步一点基础知识-正则练习题
    day2-每天进步一点基础知识
    day1-每天进步一点
    数组有没有length()这个方法? String有没有length()这个方法?
    List, Set, Map是否继承自Collection接口?
    启动一个线程是用run()还是start()?
  • 原文地址:https://www.cnblogs.com/dfzone/p/1811106.html
Copyright © 2020-2023  润新知