深入理解web前端

CSS 优先级

2016-05-12  本文已影响51人  hcxowe

概念

浏览器通过优先级来判断哪一些属性值与一个元素最为相关,从而在该元素上应用这些属性值。优先级基于由各种选择器组成的匹配规则。

样式的优先级

多重样式(Multiple Styles):如果外部样式、内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况。

一般情况下,优先级如下:
(外部样式) <(内部样式) <(内联样式)

有个例外的情况,就是如果外部样式放在内部样式后面,则外部样式将覆盖内部样式。

选择器的优先权

Paste_Image.png

解释:

  1. 内联样式表的权值最高 1000;
  2. ID 选择器的权值为 100
  3. Class 类选择器的权值为 10
  4. HTML 标签选择器的权值为 1
    <html>
    <head>
    <style type="text/css">
    #redP p {
    /* 权值 = 100+1=101 /
    color:#F00; /
    红色 /
    }
    #redP .red em {
    /
    权值 = 100+10+1=111 /
    color:#00F; /
    蓝色 /
    }
    #redP p span em {
    /
    权值 = 100+1+1+1=103 /
    color:#FF0;/
    黄色*/
    }
    </style>
    </head>
    <body>
    <div id="redP">
    <p class="red">red

    <span><em>em red</em></span>
    </p>
    <p>red</p>
    </div>
    </body>
    </html>
    最后结果为:
    Paste_Image.png

优先级法则

修改样式

<style type="text/css">
        #redP p {
            /* 权值 = 100+1=101 */
            color:#F00;  
        }
        #redP .red em {
            /* 权值 = 100+10+1=111 */
            color:#00F; 
        }
        #redP p span em {
            /* 权值 = 100+1+1+1=103 */
            color:#FF0 !important;
        }
</style>

则结果为:

Paste_Image.png

!important

当在一个样式声明上使用 !important 规则时,该样式声明会覆盖CSS中任何其他的声明。使用 !important 是一个坏习惯,应该尽量避免,因为这打断了样式表中的固有的级联规则。当两条相互冲突的带有!important 规则的声明被应用到相同的元素上时,拥有更大优先级的声明将会被采用。

一些经验法则:

取而代之,你可以:

怎样覆盖掉 !important

上一篇 下一篇

猜你喜欢

热点阅读