Css选择器权重排序详解+权重计算
前言:
很多人面试的时候,面试官会问一些基础的问题。比如选择器权重排序,大家都知道,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选择器权重排序详解+权重计算相关推荐
- css样式继承规则详解
css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...
- (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
目标检测算法之YOLOv5计算预选框.详解anchor计算 单节段目标检测算法中:预选框的设定直接影响最终的检测精度 众所周知,yolov5中采用自适应调整预选框anchor的大小,但万事开头难,配置 ...
- javascript写css样式,原生javascript实现读写CSS样式的方法详解
原生javascript实现读写CSS样式的方法详解 发布于 2017-05-24 15:05:31 | 120 次阅读 | 评论: 0 | 来源: 网友投递 JavaScript客户端脚本语言Jav ...
- CSS相对定位和绝对定位详解
CSS相对定位和绝对定位详解 如果,说浮动, 关键在一个 "浮" 字上面, 那么 我们的定位,关键在于一个 "位" 上. PS: 定位是我们CSS算是数一数二难 ...
- CSS浏览器兼容性问题详解总结
CSS浏览器兼容性问题详解总结 2009-11-12 11:39 对css缩写的支持问题: 不论是ie 还是ff对css的缩写都有一小点问题 比如 border: 0xp solid #fff;两个浏 ...
- 我的学习笔记——CSS背景渐变(Gradients)详解
我的学习笔记--CSS背景渐变(Gradients)详解 一.线性渐变(Linear Gradients) 1.语法 background-image: linear-gradient(directi ...
- CSS中line-height属性详解(CSS之四)
CSS中line-height属性详解 基本概念 line-height,又称行高,指的是两行文字基线之间的距离,又可以称为这行文字所占的高度. 图中两行基线之间的距离就是行高,基线相关可以查看CSS ...
- CSS 清除浮动原理详解
CSS 清除浮动原理详解 一. 浮动float float属性的本质是用来实现文字环绕效果的. 它有一个很大的副作用:会导致父容器的高度坍塌 疑问: 那么将父容器固定高度有用吗? 没用,因为只要浮动元 ...
- oracle中datepart函数,Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔)...
Asp DatePart 函数的语法详解(用于计算日期并返回指定的时间间隔) 更新时间:2012年07月31日 21:32:58 作者: ASP(VBScript) 参考手册中,已经对 DateP ...
- css改变伪元素color_jQuery教程 改变css伪元素样式详解
本篇教程介绍了jQuery教程 改变css伪元素样式详解,希望阅读本篇文章以后大家有所收获,帮助大家对jQuery的理解更加深入. < 首先我们看一下css伪元素是什么: CSS 伪元素用于向某 ...
最新文章
- 从零开始学习jQuery (六) AJAX快餐【转】
- 基于java多线程来实现生产者和消费者的实例
- 10.05 最初对Linux的了解,对Shell的认识
- 【控制】《多无人机协同控制技术》周伟老师-第11章-多无人机协同航迹规划方法
- Binder子系统之调试分析(三)
- MATLAB观察日志(part1)--求极限
- 从位图数据取得位图句柄
- Bootstrap ScrollSpy 用法
- redux reducer_如何通过约定创建Redux reducer
- 数据结构(一)快速排序
- win10 修改hosts文件
- Apple watch无法登陆网易云音乐
- Scratch捡垃圾游戏 电子学会图形化编程scratch等级考试三级真题答案2019-12
- css 鼠标经过显示禁止符号
- 解决键盘模式(布局)的错误导致的部分键位失灵或异常(姑且这样描述问题吧)
- 《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》论文笔记
- 小论文撰写中常用单词的N种说法
- linux系统下html中文乱码
- python自动化工具之pywinauto(三)
- 【设计模式】模板方法模式(C#)