CSS权重叠加计算案例

第一题

<head>
	<meta charset="utf-8">
	<title>第1题:普通题</title>
	<style>
		/* (行内, id, 类, 标签) */
		/* !important 最高 */
		/* 继承: 最低 */

		/* (0, 2, 0, 0) */
		#father #son {
			color:blue; 
		} 
		
		/* (0, 1, 1, 1) */
		#father p.c2 {
			color:black;
		} 
		
		/* (0, 0, 2, 2) */
		div.c1 p.c2 {
			color:red;
		} 

		/* 继承, 最低 */
		#father { 
			color:green !important;
		} 

		/* 继承, 最低 */
		div#father.c1 {
			color: yellow ;
		} 

	</style>
</head>
<body>
	<div id="father" class="c1">
		<p id="son" class="c2">
			这行文本是什么颜色的? 
		</p>
	</div>
</body>

结果:blue

第二题

<head>
	<meta charset="UTF-8">
	<title>第2题: 标签选择器选择一类</title>
	<style>
		/* (行内, id, 类, 标签) */
		/* !important 最高 */
		/* 继承: 最低 */
	
		/* 2 */
	  div div {
			color: skyblue;
		} 

		/* 1 */
		div {
			color: red;
		}
	</style>
</head>
<body>
	<div>
		<div>
			<div>
				这行文本是什么颜色?
			</div>
		</div>
	</div>
</body>

结果:skyblue

第三题

<head>
	<meta charset="UTF-8">
	<title>第3题: 权重叠加每位不存在进制</title>
	<style>
		/* (行内, id, 类, 标签) */
		div div div div div div div div div div div div {  
			color: red;
		}
		
		.one { 
			color: pink;
		}
	</style>
</head>
<body>
	<div>
		<div>
			<div>
				<div>
					<div>
						<div>
							<div>
								<div>
									<div>
										<div>
											<div>
												<div class="one">这行文字是什么颜色的?</div>
											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</body>

结果:pink

第四题

<head>
	<meta charset="UTF-8">
	<title>第4题:权重相同此时比较层叠性</title>
	<style>
		/* (0, 0, 2, 1) */
		.c1 .c2 div { 
			color: blue;
		}
		
		/* (0, 1, 0, 1) */
		div #box3 {
			color:green;
		}
		
		/* (0, 1, 0, 1) */
		#box1 div {
			color:yellow;
		}
	</style>
</head>
<body>
	<div id="box1" class="c1">
		<div id="box2" class="c2">
			<div id="box3" class="c3">
				这行文本是什么颜色的?
			</div>
		</div>
	</div>
</body>

结果:yellow

第五题

<head>
	<meta charset="UTF-8">
	<title>第5题: 全是继承的特殊情况</title>
	<style>
		/* 都是继承, 继承里面谁高, 看继承哪个父级, 哪个父级高, 哪个选择器生效 */

		/* 继承 */
		div p {
			color:red;
		} 

		/* 继承 */
		.father {
			color:blue;
		} 
	</style>
</head>
<body>
	<div class="father">
		<p class="son"> 
			<span>文字</span>
		</p>
	</div>
</body>

结果:red

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS选择器的权重计算是通过CSS Specificity(特殊性)来确定的。在计算权重时,可以按照以下规则进行计算: 1. 选择器的特殊性由选择器本身的组成部分决定,包括元素选择器、类选择器、id选择器和内联样式。通常来说,id选择器的特殊性最高,其次是类选择器和属性选择器,再次是元素选择器。 2. 对于相同特殊性的选择器,后面出现的选择器会覆盖前面出现的选择器。 3. 使用!important声明的样式具有最高的特殊性,将覆盖其他所有的样式。 根据上述规则,可以用以下公式来计算选择器的权重: - id选择器:权重为1,例如#myId{} - 类选择器、属性选择器或伪类选择器:权重为10,例如.class{}、[type="text"]{}、:hover{} - 元素选择器或伪元素选择器:权重为100,例如div{}、::before{} - 内联样式:权重为1000,例如<div style="color:red;"> 在计算完各个选择器的权重后,具体的权重比较规则是:按照权重从左到右依次比较,权重值较大的样式会覆盖权重值较小的样式。 需要注意的是,CSS权重计算只适用于冲突的样式规则。如果没有发生冲突,那么所有样式规则都会生效。 总结起来,CSS选择器的权重计算是通过特殊性来确定的,特殊性由选择器本身的组成部分决定,而权重比较是按照权重从左到右依次比较的原则。这样,在编写CSS样式时,我们可以更好地控制样式的优先级。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [CSS选择器与权重计算(详细)](https://blog.csdn.net/weixin_44164982/article/details/107227294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [CSS选择器的权重计算](https://blog.csdn.net/u010297791/article/details/58602255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值