CSS 选择器的优先级

优先级的顺序:行内样式>id选择器>类选择器>标签选择器>*通配符选择器>继承

[html] view plain copy
<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        * { /*通配符选择器*/  
            color: pink;  
        }  
        body {  /*继承*/  
            color: green;  
        }  
        div {   /*标签选择器*/  
            color: blue;  
        }  
        .d1 {   /*类选择器*/  
            color: yellow;  
        }  
        #d2 {   /*id选择器*/  
            color: purple;  
        }  
    </style>  
</head>  
<body>  
    <!--行类样式-->  
   <div style="color: red " class="d1" id="d2">优先级</div>  
</body>  
</html>  
[html] view plain copy
<span style="font-family:Microsoft YaHei;font-size:12px;">       但是优先级有个变数就是important,它可以改变选择器的优先级,如果在某个样式后面添加了important后,该选择器的优先级就会最高,例如:还是如上代码,给类选择器添加important后,字体颜色就会变成黄色。</span>  

  

[html] view plain copy
<pre class="html" name="code">.d1 {   /*类选择器*/  
    color: yellow !important;  

接下来讲优先级的权重

权重算法:(0, 0, 0, 0)

第一个0对应着important的个数,

第二个0对应着id选择器的个数

第三个0对应着类选择器的个数

第四个0对应着标签选择器的个数

比较方法:先从第一个0开始比较,如果第一个0大,那么说明这个选择器的权重高,如果第一个相同,则比较第二个,依此类推。

 

[html] view plain copy
<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>  
    <style>  
        div div { /*(0, 0, 0, 2)*/  
            color: red;  
        }  
        div .son { /*(0, 0, 1, 1)*/  
            color: blue;  
        }  
        div #son {/*(0, 1, 0, 1)*/  
            color: pink;  
        }  
        .father div {/*(0, 0, 1, 1)*/  
            color: yellow;  
        }  
        .father .son {/*(0, 0, 2, 0)*/  
            color: green;  
        }  
        .father #son {/*(0, 1, 1, 0)*/  
            color: purple;  
        }  
        #father div {/*(0, 1, 0, 1)*/  
            color: gray;  
        }  
    </style>  
</head>  
<body>  
<div class="father" id="father">  
    <div class="son" id="son">权重</div>  
</div>  
</body>  
</html>  

  通过权重的算法我们可以很快的得知最后字体的颜色为紫色

如果给下面的样式添加了!important,则权重变成最高,字体颜色将为绿色

[html] view plain copy
.father .son {/*(1, 0, 2, 0)*/  
    color: green !important;  
}  

  

最后说一下选择器的工作原理

选择器在查找元素的时候不是从左往右找,而是从右往左找

[html] view plain copy
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style>
/*从左往右找*/
div div { /*先找到一个子元素标签为div,然后再找这个元素是否有一个父元素标签也为div*/
color: red;
}
div {
color: blue;
}
</style>
</head>
<body>
<div>
文字
<div>

  <div>  

       文字  

<div>文字</div>  

</div>  

</div>  

</body>  

</html>  

结果显而易见是:蓝,红,红

 

posted @ 2016-11-25 16:18  potato~e-e  阅读(300)  评论(0编辑  收藏  举报