天涯论坛

 找回密码
 立即注册
搜索
查看: 68|回复: 5

CSS选取器优先级详解

[复制链接]

2986

主题

3万

回帖

9956万

积分

论坛元老

Rank: 8Rank: 8

积分
99569168
发表于 2024-6-30 06:54:40 | 显示全部楼层 |阅读模式

前言:

关于CSS的选取器优先级我在w3school文档中并看到对应说明,网上比较笼统的说法是:

“important > 内联 > ID > 类 > 标签 | 伪类 | 属性选取 > 伪对象 > 继承 > 通配符”。

那 么这个次序是怎么得出来的呢?实质上在CSS2规范关于详细性(specificity)的定义中,描述是非常知道的,然则非常多中文版本的css图书中采 用了10进制的简单相加计算方式(包含第1版《CSS权威指南》,第二版中已然纠正)。因此呢把规范中对CSS层叠优先级的关联定义意译一下,期盼对权重计算尚有疑惑的伴侣供给有些参考。

按照CSS规范,详细性越知道的样式规则,权重值越高。计算权重值的依据,并不是许多文案所描述的那样“class是10,标签是1,ID是100”之类——虽然这般在大都数状况下能够得到正确的结果。但显现非常多耐人费解的地区

见代码:

<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <style type="text/css"> //样式一 #child{ color:red; } //样式二 #parent>p>h1>span{ color:blue; } </style> <title>css选取器权值对比</title> </head> <body> <div id="parent"> <p> <h1> <span id="child">css选取器权值对比</span> </h1> </p> </div> </body> </html>

根据之前说法,ID选取器优先级大于子选取器,代码运行结果应该是红色字体。而实质运行结果却为蓝色字体:

运行结果

选取器权重值的计算

A:倘若规则是写在标签的style属性中(内联样式),则A=1,否则,A=0. 针对内联样式,因为选取器,因此B、C、D的值都为0,即A=1, B=0, C=0, D=0(简写为1,0,0,0,下同);

B:计算该选取器中ID的数量。(例如,#header 这般选取器,计算为0, 1, 0, 0);

C:计算该选取器中伪类及其它属性的数量(包含class、属性选取器等,不包含伪元素)。 (例如,.logo[id=site-logo] 这般选取器,计算为0, 0, 2, 0);

D:计算该选取器中伪元素及标签的数量。(例如,p:first-letter 这般选取器,计算为0, 0, 0, 2)。

CSS2规范中给出的有些例子:

* {} /* a=0 b=0 c=0 d=0 -> specificity = 0,0,0,0 */

li {} /* a=0 b=0 c=0 d=1 -> specificity = 0,0,0,1 */

li:first-line {} /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */

ul li {} /* a=0 b=0 c=0 d=2 -> specificity = 0,0,0,2 */

ul ol+li {} /* a=0 b=0 c=0 d=3 -> specificity = 0,0,0,3 */

h1 + *[rel=up]{} /*





上一篇:CSS 中的常用选取器
下一篇:详解:5种CSS选取器的结合运用
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-3 02:31:14 | 显示全部楼层
外链论坛的成功举办,是与各位领导、同仁们的关怀和支持分不开的。在此,我谨代表公司向关心和支持论坛的各界人士表示最衷心的感谢!
回复

使用道具 举报

3089

主题

3万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098770
发表于 2024-10-5 18:11:45 | 显示全部楼层
我完全同意你的观点,说得太对了。
回复

使用道具 举报

3139

主题

3万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968622
发表于 2024-10-9 21:40:05 | 显示全部楼层
“BS”(鄙视的缩写)‌
回复

使用道具 举报

3089

主题

3万

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99098770
发表于 2024-10-20 05:02:32 | 显示全部楼层
你的努力一定会被看见,相信自己,加油。
回复

使用道具 举报

3048

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109040
发表于 2024-10-22 04:53:31 | 显示全部楼层
感谢楼主分享,祝愿外链论坛越办越好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 11:27 , Processed in 0.114494 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.