CSS 的优先级机制总结

一、样式优先级:

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

  一般情况下,大家都认为优先级是:内联样式 > 内部样式 > 外联样式,实际上不是如此,内部样式和外联样式优先级一样(看谁在先后的问题)如果外部样式放在内部样式的后面,则外部样式将覆盖内部样式。如果内部样式放在外部样式的后面,则内部样式将覆盖外部样式。

二、选择器优先级

  最高:内联样式 > id > class > 标签选择器

  1.  内联样式表的权值最高 1000;

  2.  ID 选择器的权值为 100

  3.  Class 类选择器的权值为 10

  4.  HTML 标签选择器的权值为 1

  5. 后代选择器则利用选择器的权值进行计算比较,示例如下:

<html>
<head>
<meta charset="utf-8">
    <title>无标题页</title>
    <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>

三、CSS 优先级法则:

  A  选择器都有一个权值,权值越大越优先

  B  当权值相等时后出现的样式表设置要优于先出现的样式表设置;

  C  创作者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式;

  D  继承的CSS 样式不如后来指定的CSS 样式;

  E  标有!important”规则的优先级最大:当 !important 规则被应用在一个样式声明中时,该样式声明会覆盖CSS中任何其他的声明,,无论它处在声明列表中的哪个位置.。尽管如此, !important规则还是与优先级毫无关系,使用 !important不是一个好习惯,因为它改变了你样式表本来的级联规则,从而难以调试。

<style type="text/css">
    #redP p{   /*两个color属性在同一组*/
        color:#00f !important; /* 优先级最大 */
        color:#f00;
    }
</style>

  怎样覆盖掉 !important:很简单,你只需要:

  (1)再加一条!important 的CSS语句,将其应用到更高优先级的选择器(在原有基础上添加额外的标签、class或id选择器)上;

  (2)或是保持选择器一样,但添加的位置需要在原有声明的后面(优先级相同的情况下,后边定义的会覆盖前边定义的)。

 

posted @ 2017-07-21 14:58  古兰精  阅读(574)  评论(0编辑  收藏  举报