CSS覆盖失效的原因和解决办法

来自:互联网
时间:2018-08-14
阅读:

我们在使用CSS给网站添加样式时,经常会用到覆盖,原则上,后添加的样式会覆盖前面的样式,但有时却会失效,这是为什么呢?今天让我们来探讨下,CSS覆盖失效的原因和解决办法。

如果前面的选择器中包含ID选择器,如#mAIn .link dt{}那么后面的选择器也必须包含ID选择器才能覆盖,否则无效。一定要记住ID选择器的特殊性,其他选择器没有这些限制。

以下HTML代码作为案例:

<div class='father'>
  <div id='son'>
    <div class='child'>
      <div id='girl'><a href='#'>zuizhong</a></div>
    </div>
  </div>
</div>

CSS代码如下:

#son a{color: #FF0;}
#girl a{color:red;}

他们都包含ID选择器,那么他们谁在后面,就会覆盖前面的。

#father a{
    color:red;}
.child a{
    color: #FF0;
}

他们无论谁前谁后,样式始终是带ID选择器的为准。

.father #son a{
    color:red;}
#girl a{
    color: #FF0;
}

在这里样式以前面那个为准,因为他多了一个类别选择器father,比下面那个更特殊,所以无法覆盖。

.father .child a{
    color:red;}
#girl a{
    color: #FF0;
}

在这里,前面的看上去更特殊,因为他套了3层,由于第一个没ID,而第2个包含ID,所以还是以带ID的样式为准。

结论:特殊性ID选择器>类别选择器>标签选择器

当选择器中含有相同的选择器时,谁的选择器数量多,谁就更特殊。

要想覆盖前面的样式,特殊性必须是大于等于,否则无效!

返回顶部
顶部