三分钟搞懂CSS 权重

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

内容简介:切图时是不是经常性的写了样式无效呢? 半死不得其解吧为什么自己的样式老是被抵掉了呢? 为什么老是用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) */
}复制代码

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

查看所有标签

猜你喜欢:

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

网络经济的十种策略

网络经济的十种策略

(美)凯文・凯利 / 肖华敬/任平 / 广州出版社 / 2000-06 / 26.00元

全书介绍网络经济的十个新游戏规则,分别是:蜜蜂比狮子重要;级数比加法重要;普及比稀有重要;免费比利润重要;网络比公司重要;造山比登山重要;空间比场所重要;流动比平衡重要;关系比产能重要;机会比效率重要!一起来看看 《网络经济的十种策略》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码