css样式优先级机制
对css选择器不熟悉的建议先看看w3school
一、权值不同时
样式类型 | 权重值 |
---|---|
style内联样式(标签内部) | 1000 |
ID选择器 | 0100 |
类选择器,属性选择器,伪类 | 0010 |
元素选择器,伪元素 | 0001 |
下面我们就可以根据上表的权值来计算和比较优先级
选择器 | 权重值 |
---|---|
div span {color:blue} | 1+1=2 |
div .hot {color:yellow} | 10+1=11 |
#wrap span {color:black} | 100+1=101 |
#wrap .hot {color:red} | 100+10=110 |
1、根据上面的权重值计算,我们可以知道最终样式为color:red。
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>div span {color:blue;}div .hot {color:yellow;}#wrap span {color:black;}#wrap .hot {color:red;}</style>
</head>
<body><div id="wrap" class="div1"><span class="hot">hhhhhhhhhhhhhhhhh</span></div>
</body>
</html>
运行结果确实为红色:
注意一下:
虽然理论上优先级是按上面的权值计算,但是那只是基于同级上的比较。(11个元素选择器级别比不上1个类选择器,其余同理)
当然,还有比style行间样式优先级更高的是javascript写的样式,即js能修改掉css中的样式,但有一个是例外,那就是css样式中加了!important 。
2、还是上面的栗子,首先看一下js修改css样式:
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>div span {color:blue;}div .hot {color:yellow;}#wrap span {color:black;}#wrap .hot {color:red;}</style><script>window.onload = function () {// 修改span里面字体颜色为粉红色var oHot = document.getElementsByTagName('span')[0];oHot.style.color = 'pink';}</script>
</head>
<body><div id="wrap" class="div1"><span class="hot">hhhhhhhhhhhhhhhhh</span></div>
</body>
</html>
运行结果,文字变成了粉红色:
3、!important具有最高的优先级,当给选择器中加了!important,js是无法修改的。现在试试给权值最小的div span加上!important
(需要提一下:IE6的渲染引擎不认识!important,解析时会自动忽略)
div span {color:blue; color:orange!important;}
结果字体是橘色的
4、继承的样式权值很小,可以看做0或者接近0
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>div .hot {color: blue;}div.div1 {color:yellow;}</style>
</head>
<body>
<div class="div1"><span class="hot">hhhhhhhhhhhhhhhhh</span>
</div>
</body>
</html>
这里结果为蓝色
二、权值相同时
一般来说,内联样式表(标签内部)> 内部样式表(当前文件中)> 外部样式表(外部文件中)。但是如果外部样式放在内部样式后面,那么外部样式将覆盖内部样式。
综上我们可以用“就近原则”来说明权值相同时,靠近元素的样式级别优先
<!DOCTYPE html>
<html>
<head lang="en"><meta charset="UTF-8"><title></title><style>div{width: 100px;height: 100px;;}.div1 {background-color:red;}.div2 {background-color: blue;}</style>
</head>
<body><div class="div1"></div><hr/><div class="div2"></div><hr/><div class="div1 div2"></div><hr/><div class="div2 div1"></div><hr/>
</body>
</html>
.div2在.div1后面,会覆盖掉前面的样式。但是注意,这个顺序并不是指class里面的先后顺序。我们可以看到第四个div依然是蓝色
综上
- 每个选择器都有权值,权值越大越优先
- 继承的样式优先级低于自身指定样式
- !important优先级最高
- 权值相同时,靠近元素的样式优先级高(没有js参与)
css样式优先级机制相关推荐
- CSS样式优先级——不止“就近原则”那么简单
CSS样式优先级 CSS是Cascading Style Sheets的全称,中文译为层叠样式表.关键字"层叠"体现在--页面中的元素往往是多个样式属性叠加在一起作用后的效果. 那 ...
- css样式优先级规则总结
CSS样式优先级规则共有4点 1)不同类型css选择器,优先级总是符合如下规则 内联样式 > ID 选择器 >伪类 > 属性选择器 > 类选择器 >元素(类型)选择器 & ...
- CSS样式优先级及选择器
css样式优先级: 样式的结构顺序:外部样式>内部样式>行内样式 样式的最终显示结果:以就近原则为准 css样式选择器: 1.标签选择器: 例:h/p/span/input/div/a{ ...
- 怎么排列html的顺序,css样式优先级及层叠的顺序排序探讨
一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用!important可 ...
- CSS样式优先级顺序详解
CSS样式优先级详解 这里有一篇对CSS样式的优先级顺序进行解释的,讲的挺详细的,写的不错.大家可以参考这一篇: https://juejin.im/post/5f0eae715188252e3c4d ...
- css样式优先级问题
此片博客为参考博客,更多详情可看:https://www.cnblogs.com/ombre/p/7418667.html 官方表述的CSS样式优先级如下: 通用选择器(*)<元素(类型)选择器 ...
- 强制改变css样式优先级
1:!important作用是提高指定CSS样式规则的应用优先权.在CSS中,通过对某一样式声明! important ,可以更改默认的CSS样式优先级规则,使该条样式属性声明具有最高优先级,也就是相 ...
- CSS 之 样式优先级机制
多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 1.一般情况下,优先级从低到高,如下: 浏览器缺省(即浏览器默认) →(外部样 ...
- 何为CSS 样式优先级
当创建的样式表越来越复杂时,一个标签的样式将会受到越来越多的影响,这种影响可能来自周围的标签,也可能来自其自身.下面我们从这两方面去看看 CSS 样式的优先级. CSS 的继承性 CSS 的继承特性指 ...
最新文章
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
- 当产品上线前出了 Bug | 每日趣闻
- java的初始化顺序
- 一个简单函数的反汇编分析
- 简单理解AOP(面向切面编程)
- hibernate 环境搭建测试
- Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD
- c# 溢出抛异常_Rust竟然没有异常处理?
- web应用程序和Web网站区别
- 关于静态编译出现的问题以及解决方法
- 安装布署rsync+Inotify实现数据的实时同步更新
- 10个WEB设计戒律 和 10个设计师戒律
- matlab个版本介绍,matlab软件功能简要介绍及版本描述
- Typora Beta版过期解决方法
- 数据仓库工程师的职业规划
- a DNS-1123 label must consist of lower case alphanumeric characters or ‘-‘, and must start and end w
- RT-Thread实战笔记|MPU6050使用详解及DMP姿态解算
- java速记_spring复习速记
- 【渝粤题库】陕西师范大学200551 英语语音
- HTML常用标签或属性 英文全称和中文释义
热门文章
- 实现 十进制整数转换成二进制,八进制,十六进制
- mysql树状数据结构_树状结构的数据表如何设计?
- Linux防火墙白名单限制
- php仿boss直聘,仿BOSS直聘APP下拉刷新动画实现
- Snagit长截图或完整截图技巧
- php后端mvc框架,GitHub - Tokyo-Lei/Amaya: 史上最简单的PHP MVC框架!首先你了解MVC和COMPOSER就行!...
- Python编程:接口
- 第十届蓝桥杯B组国赛题
- 软件需求管理用例方法 pdf_企业内训“软件需求设计建模方法学全程实例剖析”训练方案(2020年)...
- 一个android文本比对app的实现(四)--Hirschberg文本比对算法