简介一下前端CSS选择器的权重值

最近发现一个关于css权重的知识,瞬间解决了很多疑惑,觉得有必要和大家分享一下

在css样式设计时很多时候都是靠权重来设置标签样式,其中一个最大的规律就是各种选择方式的权重大小:

!important>行间样式>id>class |属性 >标签选择器 > 通配符

但是这就出现一个问题,如果是两两组合的话,就让人分不清权重的优先级了。因为这个权重不仅有一个大小的关系,而且还有一个具体的值的对应关系,同时这个值是可运算的,最重要的一点是这个值不是10进制,是256进制的数据,具体对应关系如下:

!important     ---->   Infinity

行间样式        ---->  1000

id                     ---->   100

class|属性|伪类  ----> 10

标签|伪元素       ---->   1

通配符                ---->  0

//256进制

实例一:

有这么一组标签:

<div class="wrapper" id="only">

        <p  class="wrapper1" id="only1">

        </p>

</div>

假如用下面两种方式来装饰样式,哪个会起作用:

1,#only p{

    background-color:red;

}

2,.wrapper .wrapper1{

    background-color:green;

}

这个时候如果单纯的靠优先级就不太容易判断,这个时候权重值就可以很直接的解决这个问题,首先要知道些在一行的选择器权重值直接相加,虽然值不是10进制,但就一般的情况下,用10进制也很明显的能比较出大小的。

第一种选择方式权重值为:100 +1 =101

第二种选择方式的权重值为:10+10 =20,所以background-color:red;起作用

实例二:

还是上面的标签,选择器改为如下:

1,div#only p{

background-color:red!important;

}

2,.wrapper .wrapper1{

background-color:green!important;

}

第一种选择方式权重值为:1+100 +1 +  Infinity=102 + Infinity

第二种选择方式的权重值为:10+10 + Infinity =20 + Infinity,

这个时候就有一个问题了,当有两个无穷大的权重时,这个如何比较?

在CSS权重值里,无穷大也仅仅是作为一个值来计算,还要继续比较其他的值,也就是说

1 +  Infinity  >   Infinity     所以这里background-color:red;起作用

最后需要补充的一点是,假如两个选择器权重值一样,那么后面的代码就会默认的覆盖前面的代码,也就是后面的代码起作用!!!!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • CSS基础 本文包括CSS基础知识选择器(重要!!!)继承、特殊性、层叠、重要性CSS格式化排版单位和值盒模型浮动...
    廖少少阅读 8,546评论 0 40
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 28,355评论 1 45
  • 1.CSS简介 Cascading Style Sheet 层叠样式表 主要用来定义页面中的表现,HTML 描述页...
    hyt222阅读 4,438评论 0 0
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 6,863评论 0 11
  • 吴伯凡 越是顺遂,越要提防“惰怠”的状态 知识笔记 我们今天要解读的关键词是惰怠,这个词也可以说成怠惰,怠慢的怠,...
    尼安德特人1阅读 4,123评论 0 0

友情链接更多精彩内容