前言:

很多人面试的时候,面试官会问一些基础的问题。比如选择器权重排序,大家都知道,id权重>class权重>标签权重。但是深入讲个所以然,很多人又回答不上来。今天就写个案例来给大家讲解一些选择器当中的权重是如何计算的。


权重计算:

大家看下面这段代码,分析一下,p标签会是什么颜色?

<style>.div1 .div2 .div3 p{color: red;}.div1 #div2 #div3 p{color: green;}.div1 div.div2 .div3 p{color:orange;}
</style>
    <div class="div1" id="div1"><div class="div2" id="div2"><div class="div3" id="div3"><p>我是复杂权重</p></div></div></div>

正确答案应该是:绿色

为什么呢?带着这个疑惑我们来解答这个问题。毋庸置疑的的是上面的三种选择p标签的方式,都可取的,但是当这三种都同时存在的时候,我们的浏览器会如何识别呢?这其中就包含了一个复杂权重的计算问题。

权重计算方式:id数量,class数量,标签数量 

第一条css样式它的id数量是0,class数量是3,标签数量是1,那么它的权重就是0,3,1

第二条css样式它的id数量是2,class数量是1,标签数量是1,那么它的权重就是2,1,1

第三条css样式它的id数量是0,class数量是3,标签数量是2,那么它的权重就是0,3,2

首先先从id数量比起,谁多谁就胜出。如果id数量比不出来,那么就从class数量比起,然后再到标签数量。

由此可以看出,第二条样式id数量最多,它的权重要比其它两条大,所以css会识别这条,并为它设置绿色。


加强权重:

我们再来看一段案例,猜测一下li.span标签的颜色是什么?

    <div class="div4" id="div4"><ul class="ul1" id="ul1"><li>1</li><li class="spec">1</li><li>1</li><li>1</li><li>1</li></ul></div>
    /* 权重:1,1,1 */#div4 .ul1 li{list-style: none;color: red;}/* 权重:0,1,1 */li.spec{color: orange !important}

正确答案是:橙黄色 

那有的同学就有疑问了,明明是第一条属性的权重大呀,不应该是红色吗?但是大家看第二条样式,颜色后面跟了一个!importtant,这是什么意思呢?

!importtant的意思就是加强权重,在英文翻译中叫做“重要的”。在哪条属性上面设置加强权重,那么它的优先级会增加。加了这个属性,它的权重就是最大的,所以颜色优先选择了橘黄色

看到这里,相信大家对权重计算以及加强权重有了更深入的了解了。


声明:以上所有内容为本人原创,未经许可严禁转载,转载请私信,并注明出处。

Css选择器权重排序详解+权重计算相关推荐

  1. css样式继承规则详解

    css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...

  2. (20)目标检测算法之YOLOv5计算预选框、详解anchor计算

    目标检测算法之YOLOv5计算预选框.详解anchor计算 单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置 ...

  3. javascript写css样式,原生javascript实现读写CSS样式的方法详解

    原生javascript实现读写CSS样式的方法详解 发布于 2017-05-24 15:05:31 | 120 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客户端脚本语言Jav ...

  4. CSS相对定位和绝对定位详解

    CSS相对定位和绝对定位详解 如果,说浮动, 关键在一个 "浮" 字上面, 那么 我们的定位,关键在于一个 "位" 上. PS: 定位是我们CSS算是数一数二难 ...

  5. CSS浏览器兼容性问题详解总结

    CSS浏览器兼容性问题详解总结 2009-11-12 11:39 对css缩写的支持问题: 不论是ie 还是ff对css的缩写都有一小点问题 比如 border: 0xp solid #fff;两个浏 ...

  6. 我的学习笔记——CSS背景渐变(Gradients)详解

    我的学习笔记--CSS背景渐变(Gradients)详解 一.线性渐变(Linear Gradients) 1.语法 background-image: linear-gradient(directi ...

  7. CSS中line-height属性详解(CSS之四)

    CSS中line-height属性详解 基本概念 line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度. 图中两行基线之间的距离就是行高,基线相关可以查看CSS ...

  8. CSS 清除浮动原理详解

    CSS 清除浮动原理详解 一. 浮动float float属性的本质是用来实现文字环绕效果的. 它有一个很大的副作用:会导致父容器的高度坍塌 疑问: 那么将父容器固定高度有用吗? 没用,因为只要浮动元 ...

  9. oracle中datepart函数,Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔)...

    Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔) 更新时间:2012年07月31日 21:32:58   作者: ASP(VBScript) 参考手册中,已经对 DateP ...

  10. css改变伪元素color_jQuery教程 改变css伪元素样式详解

    本篇教程介绍了jQuery教程 改变css伪元素样式详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < 首先我们看一下css伪元素是什么: CSS 伪元素用于向某 ...

最新文章

  1. 从零开始学习jQuery (六) AJAX快餐【转】
  2. 基于java多线程来实现生产者和消费者的实例
  3. 10.05 最初对Linux的了解,对Shell的认识
  4. 【控制】《多无人机协同控制技术》周伟老师-第11章-多无人机协同航迹规划方法
  5. Binder子系统之调试分析(三)
  6. MATLAB观察日志(part1)--求极限
  7. 从位图数据取得位图句柄
  8. Bootstrap ScrollSpy 用法
  9. redux reducer_如何通过约定创建Redux reducer
  10. 数据结构(一)快速排序
  11. win10 修改hosts文件
  12. Apple watch无法登陆网易云音乐
  13. Scratch捡垃圾游戏 电子学会图形化编程scratch等级考试三级真题答案2019-12
  14. css 鼠标经过显示禁止符号
  15. 解决键盘模式(布局)的错误导致的部分键位失灵或异常(姑且这样描述问题吧)
  16. 《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》论文笔记
  17. 小论文撰写中常用单词的N种说法
  18. linux系统下html中文乱码
  19. python自动化工具之pywinauto(三)
  20. 【设计模式】模板方法模式(C#)

热门文章

  1. AI的螺旋式上升?今日头条AI掌门人马维英离职,“重返”清华从事培育科研工作
  2. linux leach仿真数据传输图性能,基于OMNeT-+-+的Leach协议的仿真研究.pdf
  3. 国产DP1363F替代CLRC663非接触式读写器芯片
  4. 基于SSM+VUE游戏账号交易系统
  5. 2,一个人体姿态识别的项目实现
  6. 计算机个人职业生涯规划
  7. 程序员的Win10必备软件
  8. 土地利用转移矩阵步骤
  9. 从零开始学PCR技术(三):PCR引物设计
  10. 电大计算机绘图三锥图形,电大机械制图课程教学辅导