对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样式优先级机制相关推荐

  1. CSS样式优先级——不止“就近原则”那么简单

    CSS样式优先级 CSS是Cascading Style Sheets的全称,中文译为层叠样式表.关键字"层叠"体现在--页面中的元素往往是多个样式属性叠加在一起作用后的效果. 那 ...

  2. css样式优先级规则总结

    CSS样式优先级规则共有4点 1)不同类型css选择器,优先级总是符合如下规则 内联样式 > ID 选择器 >伪类 > 属性选择器 > 类选择器 >元素(类型)选择器 & ...

  3. CSS样式优先级及选择器

    css样式优先级: 样式的结构顺序:外部样式>内部样式>行内样式 样式的最终显示结果:以就近原则为准 css样式选择器: 1.标签选择器: 例:h/p/span/input/div/a{ ...

  4. 怎么排列html的顺序,css样式优先级及层叠的顺序排序探讨

    一般情况下: [1位重要标志位] > [4位特殊性标志] > 声明先后顺序 !important > [ id > class > tag ] 使用!important可 ...

  5. CSS样式优先级顺序详解

    CSS样式优先级详解 这里有一篇对CSS样式的优先级顺序进行解释的,讲的挺详细的,写的不错.大家可以参考这一篇: https://juejin.im/post/5f0eae715188252e3c4d ...

  6. css样式优先级问题

    此片博客为参考博客,更多详情可看:https://www.cnblogs.com/ombre/p/7418667.html 官方表述的CSS样式优先级如下: 通用选择器(*)<元素(类型)选择器 ...

  7. 强制改变css样式优先级

    1:!important作用是提高指定CSS样式规则的应用优先权.在CSS中,通过对某一样式声明! important ,可以更改默认的CSS样式优先级规则,使该条样式属性声明具有最高优先级,也就是相 ...

  8. CSS 之 样式优先级机制

    多重样式(Multiple Styles):如果外部样式.内部样式和内联样式同时应用于同一个元素,就是使多重样式的情况. 1.一般情况下,优先级从低到高,如下: 浏览器缺省(即浏览器默认) →(外部样 ...

  9. 何为CSS 样式优先级

    当创建的样式表越来越复杂时,一个标签的样式将会受到越来越多的影响,这种影响可能来自周围的标签,也可能来自其自身.下面我们从这两方面去看看 CSS 样式的优先级. CSS 的继承性 CSS 的继承特性指 ...

最新文章

  1. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
  2. 当产品上线前出了 Bug | 每日趣闻
  3. java的初始化顺序
  4. 一个简单函数的反汇编分析
  5. 简单理解AOP(面向切面编程)
  6. hibernate 环境搭建测试
  7. Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD
  8. c# 溢出抛异常_Rust竟然没有异常处理?
  9. web应用程序和Web网站区别
  10. 关于静态编译出现的问题以及解决方法
  11. 安装布署rsync+Inotify实现数据的实时同步更新
  12. 10个WEB设计戒律 和 10个设计师戒律
  13. matlab个版本介绍,matlab软件功能简要介绍及版本描述
  14. Typora Beta版过期解决方法
  15. 数据仓库工程师的职业规划
  16. a DNS-1123 label must consist of lower case alphanumeric characters or ‘-‘, and must start and end w
  17. RT-Thread实战笔记|MPU6050使用详解及DMP姿态解算
  18. java速记_spring复习速记
  19. 【渝粤题库】陕西师范大学200551 英语语音
  20. HTML常用标签或属性 英文全称和中文释义

热门文章

  1. 实现 十进制整数转换成二进制,八进制,十六进制
  2. mysql树状数据结构_树状结构的数据表如何设计?
  3. Linux防火墙白名单限制
  4. php仿boss直聘,仿BOSS直聘APP下拉刷新动画实现
  5. Snagit长截图或完整截图技巧
  6. php后端mvc框架,GitHub - Tokyo-Lei/Amaya: 史上最简单的PHP MVC框架!首先你了解MVC和COMPOSER就行!...
  7. Python编程:接口
  8. 第十届蓝桥杯B组国赛题
  9. 软件需求管理用例方法 pdf_企业内训“软件需求设计建模方法学全程实例剖析”训练方案(2020年)...
  10. 一个android文本比对app的实现(四)--Hirschberg文本比对算法