源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
查看: 240|回复: 23

[CSS] 低权重原则——避免滥用子选择器

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2013-8-8 18:05:17 | 显示全部楼层 |阅读模式
CSS的选择符是有权重的,当不同选择符的样式设置有冲突时,会采用权重高的选择符设置的样式,经验告诉我,低权重原则——避免滥用子选择器,感兴趣的朋友可以参考本文,希望对大家有所帮助 CSS的选择符是有权重的,当不同选择符的样式设置有冲突时,会采用权重高的选择符设置的样式。

如果CSS选择符权重相同,那么样式会遵循就近原则,哪个选择符最后定义,就采用哪个选择符的样式。

如果忽略了CSS选择符权重,会产生意想不到的小麻烦。

需求与方案

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
</style>
<p id=”test”>CSS 选择符权重很重要</p>

现在需要将“很重要”三个字设置为红色,我们的做法如下:

方案一,利用子选择器

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
</style>
<p id=”test”>CSS 选择符权重<span>很重要</span></p>

方案二,新建class

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
.red { color: red; }
</style>
<p id=”test”>CSS 选择符权重<span class=”red”>很重要<span></p>

很多工程师推荐使用方案一,因为使用子选择器可以避免新增class,让HTML代码更简洁。这么考虑是有道理的,但如果这时需求有变化,需要添加新的文字进来。

改变需求

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
</style>
<p id=”test”>CSS 选择符权重<span>很重要</span>, 我们要小心处理</p>

要求将‘小心处理’设置为绿色,我们可能会这样做。

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
.green { color: green; }
</style>
<p id=”test”>
CSS 选择符权重<span>很重要</span>, 我们要<span class=”green”>小心处理<span></p>

本以为‘小心处理’会设置为绿色,但被权重更高的#test span设置为红色。子选择器在无意中影响到了我们新添加的代码。如果想要达到我们的预期,重写代码如下

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
#test span { color: red; }
#test .green { color: green; }
</style>
<p id=”test”>
CSS 选择符权重<span>很重要</span>, 我们要<span class=”green”>小心处理<span></p>

而如果使用方案二,情况会怎么样呢

复制代码代码如下:
<style type=”text/css”>
#test { font-size: 14px; }
.red { color: red; }
.green { color: green; }
</style>
<p id=”test”>CSS 选择符权重<span class=”red”>很重要<span>,我们要<span class=”green”>小心处理<span></p>

因为没有子选择器,所以我们给新添加的代码挂上新的class,就可以顺利地完成样式设置了。

小结
使用子选择器,会增加CSS选择符的权重,CSS选择符权重越高,样式越不容易被覆盖,越容易对其他选择符产生影响。所以,除非确定HTML结构非常稳定,不会再修改了,否则尽量不要使用子选择器。为了保证样式容易被覆盖,提高可维护性,CSS选择符需要保证权重尽可能低。

低权重原则——避免滥用子选择器
回复

使用道具 举报

1

主题

2万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2022-8-17 04:00:22 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

380

积分

中级会员

Rank: 3Rank: 3

积分
380
发表于 2022-11-8 13:29:55 | 显示全部楼层
天天源码论坛
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-3-23 08:02:46 | 显示全部楼层
我找了挺久终于找到了
回复 支持 反对

使用道具 举报

16

主题

2万

回帖

174

积分

注册会员

Rank: 2

积分
174
发表于 2023-7-29 04:58:08 | 显示全部楼层
的沙发水电费水电费
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-9-19 08:30:03 | 显示全部楼层
还可以不错
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

124

积分

注册会员

Rank: 2

积分
124
发表于 2024-3-15 13:41:11 | 显示全部楼层
sdsadsadsadf
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

69

积分

注册会员

Rank: 2

积分
69
发表于 2024-4-8 10:36:37 | 显示全部楼层
哈哈哈哈哈哈哈
回复 支持 反对

使用道具 举报

1

主题

2万

回帖

362

积分

中级会员

Rank: 3Rank: 3

积分
362
发表于 2024-4-30 13:18:17 | 显示全部楼层
来看看怎么样
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2024-5-1 19:22:49 | 显示全部楼层
vcxvcxv
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2024-11-25 22:45 , Processed in 0.077173 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表