华为云前端之旅(五)

举报
@Wu 发表于 2021/07/18 23:15:05 2021/07/18
【摘要】 CSS 的权重和优先级什么是权重权重决定了你css规则怎样被浏览器解析直到生效。“css权重关系到你的css规则是怎样显示的”。当很多的样式被应用到某一个元素上时,权重是一个决定哪种样式生效,或者是优先级的过程。每个选择器都有自己的权重。你的每条css规则,都包含一个权重级别。 这个级别是由不同的选择器加权计算的,通过权重,不同的样式最终会作用到你的网页中 。如果两个选择器同时作用到一个元素...

CSS 的权重和优先级

什么是权重

  1. 权重决定了你css规则怎样被浏览器解析直到生效。“css权重关系到你的css规则是怎样显示的”。
  2. 当很多的样式被应用到某一个元素上时,权重是一个决定哪种样式生效,或者是优先级的过程。
  3. 每个选择器都有自己的权重。你的每条css规则,都包含一个权重级别。 这个级别是由不同的选择器加权计算的,通过权重,不同的样式最终会作用到你的网页中 。
  4. 如果两个选择器同时作用到一个元素上,权重高者生效。


权重记忆口诀从0开始,一个行内样式+1000,一个id选择器+100,一个属性选择器、class或者伪类+10,一个元素选择器,或者伪元素+1,通配符+0。

  • 10000:!important;
  • 01000:内联样式;
  • 00100:ID 选择器;
  • 00010:类选择器、伪类选择器、属性选择器;
  • 00001:元素选择器、伪元素选择器;
  • 00000:通配选择器、后代选择器、兄弟选择器;

可以看到内联样式(通过元素中 style 属性定义的样式)的优先级大于任何选择器;而给属性值加上 !important 又可以把优先级提至最高,就是因为它的优先级最高,所以需要谨慎使用它,以下有些使用注意事项:

  • 一定要优先考虑使用样式规则的优先级来解决问题而不是 !important;
  • 只有在需要覆盖全站或外部 CSS 的特定页面中使用 !important;
  • 永远不要在你的插件中使用 !important;
  • 永远不要在全站范围的 CSS 代码中使用 !important;
  • 如果两条样式都使用!important,则权重值高的优先级更高

样式重复多写情况

在css样式表中,同一个CSS样式你写了两次,后面的会覆盖前面的。

不同的权重,权重值高则生效

行内、内联和外联样式优先级

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>css优先级</title>
		<link rel='stylesheet' href='css/styles.css'>
		<style>
	        div{
	        	background-color: blue;
	        }
	        #box{
	            background-color: green;
	        }
		</style>
	</head>
	<body>
		<!-- 行内样式生效 -->
		<div id="box" style="background-color: red;width: 100px;height: 100px;"></div>
	</body>
</html>

根据权重值来计算,行内样式的权重值最大,所以行内样式生效了。

总结一下:

!important > 行内样式 > 内联样式 and 外联样式

  1. 样式指向同一元素,权重规则生效,权重大的被应用
  2. 样式指向同一元素,权重规则生效,权重相同时,就近原则生效,后面定义的被应用
  3. 样式不指向同一元素时,权重规则失效,就近原则生效,离目标元素最近的样式被应用

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。