三分钟搞懂CSS 权重

栏目: CSS · 发布时间: 6年前

内容简介:切图时是不是经常性的写了样式无效呢? 半死不得其解吧为什么自己的样式老是被抵掉了呢? 为什么老是用important 来搞事呢?

切图时是不是经常性的写了样式无效呢? 半死不得其解吧

三分钟搞懂CSS 权重

为什么自己的样式老是被抵掉了呢? 为什么老是用important 来搞事呢?

三分钟搞懂CSS 权重

我猜应该是CSS权重问题,没有理解透彻吧

下来用几个例子说明下CSS的权重。

<p class='p2' id="p2"> daasd  </p>
复制代码
p {
  color: red; /* 权重 1 */
}复制代码

三分钟搞懂CSS 权重

.p2 {
   color: yellow; /* 权重 10 */
}复制代码

三分钟搞懂CSS 权重

#p2 {
  color: blue; /* 权重 100 */
}复制代码

三分钟搞懂CSS 权重

<p style="color:pink;" class='p2' id="p2"> daasd </p> // 权重1000 
许多人会问,难道不会被后面的class id 覆盖掉? 回答: 不会 行内权重大于类和ID复制代码

三分钟搞懂CSS 权重

p {
  color: red !important;  /* 权重 1 + important */  所以现在他最大,同时也大于行内式 style=""
}
.p2 {
  color: yellow; /* 权重 10 */
}
#p2 {
 color: yellow; /* 权重 100 */
}

复制代码

三分钟搞懂CSS 权重

<p style="color:pink !important;" class='p2' id="p2"> daasd </p>  // 无人能超越 行内 !important复制代码

三分钟搞懂CSS 权重

<div id="div">
  <p class="p2" id="p3">daasd</p> //当然也会存在多个标签嵌套 
</div>复制代码
#div p { /* 此时权重为 100 + 1 */ 大于下面两个
  color:red;
}
.p2 { /* 权重为 10 */ 
  color:yellow;
} 
#p3 { /* 权重为 100 */
  color:blue;
}  
复制代码

三分钟搞懂CSS 权重

又或者是一个更复杂的嵌套呢 ?

<div id="div" class="div-class">
  <div id="div1" class="div1-class">
    <div id="div2" class="div2-class">
      <div id="div3" class="div3-class">
         <p class="ap" id="p">daasd</p>
      </div>
    </div>
  </div>
</div>复制代码
#div p { /* 权重 100 + 1  */
  color: red;
}
/* #div p { /* 权重 100 + 1 + important  */ 加上我最大
  color: red !important;
} */

#div #div1 p { /* 权重 100 + 100 + 1  */
  color: pink;
}
#div #div1 #div2 p { /* 权重 100 + 100 + 100 + 1  */
  color: yellow;
}
#div #div1 #div2 #div3 p { /* 权重 100 + 100 + 100 + 100 + 1  */
  color: blue;
}
复制代码

三分钟搞懂CSS 权重

.div-class #div1 .div2-class .div2-class p { /* 10 + 100 +10 + 10 + 1 */
  color:red;  
}
#div .div1-class #div2 .div3-class p { /* 100 + 10 + 100 + 10 + 1 */
  color:blue;
}
#div #div1 #div2 .div3-class p { /* 100 + 100 + 100 + 10 + 1 */
  color:pink;
}
#div #div1 .div2-class .div3-class p { /* 100 + 100 + 10 + 10 + 1 */
  color:black;
}
#div #div1 .div2-class .div3-class #p { /* 100 + 100 + 10 + 10 + 100 */
  color:yellow;
}
#div #div1 .div2-class .div3-class .ap { /* 100 + 100 + 10 + 10 + 10 */
  color:green;
}
#div #div1 .div2-class #div3 .ap { /* 100 + 100 + 10 + 100 + 10 */
  color:aqua;
}复制代码

三分钟搞懂CSS 权重 分析得出最后一个最大 权重为 320 覆盖上面所有的。

嵌套越多,权重就越大,除过!important,有important 还是人家最大 。

(但需要注意的是嵌套期间  id class 标签的计算)

下面说说伪元素和伪类的权重

伪元素的权重,相当于类元素的权重

<p class='p2' id="p2"> daasd  </p>

p {
  color: red; /* 权重 1 */
}
p:hover { /* 类似 :hover,:visited,:active,:link 都代表是伪元素 */ 
  color: yellow; /* 权重 1 + hover权重(10) */
}
.p2:hover { /* 如果是类 权重 + 10 + hover 权重 会抵掉上面的  */ 
  color: blue;  
}
#p2:hover { /* 如果是id 权重 + 100 + hover 权重 会抵掉上面的  */ 
  color: pink; 
}

/* 如果其中一个加了!important,如果都加的话,还是id权重高,抵掉所有的 */
p:hover { /* 这里我最大,会抵掉上面的所有 */ 
  color: black !important; /* 权重 1 + hover权重(10) + important权重 */
}

复制代码

三分钟搞懂CSS 权重 没有指上去的时候是这个效果

三分钟搞懂CSS 权重 标签伪类指上去是这个效果

三分钟搞懂CSS 权重 类 伪类指上去是这个效果 (抵掉标签伪类)

三分钟搞懂CSS 权重 id 伪类指上去是这个效果 (抵掉类伪类)

三分钟搞懂CSS 权重 标签伪类加上!important 指上去是这个效果 (抵掉上面所有)

因为伪类的权重相当于类元素,故因为类元素的权重小于id元素的权重,所以下面这个设置:hover无效的。

p {
  color: red; /* 1 */
}
#p {
  color: pink; /* 100 */
}
.p:hover {
  color: blue;  /* 10 + 10  */
}
复制代码

三分钟搞懂CSS 权重 始终为粉色 

p {
  color: red; /* 1 */
}
#p {
  color: pink; /* 100 */
}
#p:hover {
  color: aqua;  /* 100 + 100  */
}复制代码

三分钟搞懂CSS 权重 指上去是浅绿色

伪类的权重,相当于标签元素的权重

<p class='p2' id="p2"> daasd  </p>

p {
  color: red; /* 权重 1 */
}
p:after { /* 类似 :hover,:visited,:active,:link 都代表是伪元素 */ 
  color: yellow; /* 权重 1 + hover权重(10) */
}复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计手册

算法设计手册

斯基恩纳 / 清华大学出版社 / 2009-9 / 69.00元

《算法设计手册(第2版)》是算法设计畅销书的最新版本,是设计实用且高效算法的最全面指导书。《算法设计手册(第2版)》揭密了算法的设计与分析,以简单易懂的写作风格,介绍了各种算法技术,着重强调了算法分析,全书包括两大部分,“技术”部分介绍了设计和分析计算机算法的各种方法,“资源”部分给出了大量的参考资源,以及算法实现的各种资源,此外,在作者的个人网址http://www.CS.sunysb.edu/......一起来看看 《算法设计手册》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具