外链论坛

 找回密码
 立即注册
搜索
查看: 82|回复: 3

CSS 选取器及权重

[复制链接]

2603

主题

4420

回帖

9911万

积分

论坛元老

Rank: 8Rank: 8

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

关于css解析器

HTML 经过解析生成 DOM Tree(这个咱们比较熟悉);而在 CSS 解析完毕后,必须将解析的结果与 DOM Tree 的内容一块进行分析创立一棵 Render Tree,最后用来进行绘图。

Render Tree 中的元素(WebKit 中叫作为「renderers」,Firefox 下为「frames」)与 DOM 元素相对应,但非一一对应:一个 DOM 元素可能会对应多个 renderer,如文本折行后,区别的「行」会作为 render tree 种区别的 renderer。有的 DOM 元素被 Render Tree 完全视,例如 display:none 的元素。

创立 Render Tree 时(WebKit 中的「Attachment」过程), 浏览器就要为每一个 DOM Tree 中的元素按照 CSS 的解析结果(Style Rules)来确定生成怎么样的 renderer。针对每一个 DOM 元素,必要在所有 Style Rules 中找到符合的 selector 并将对应的规则进行合并。选取器的「解析」实质是在这儿执行的 ,在遍历 DOM Tree 时,从 Style Rules 中去寻找对应的 selector。

解析次序

CSS匹配不是从左到右进行查询,而是 从右到左进行查询倘若从左到右的次序那样每条选取器都必须遍历全部DOM树,性能很受影响。所说有效的CSS便是让浏览器在查询style匹配的元素的时候尽可能进行少的查询, 因此选取器最好写的简洁一点。

选取器权重

权重,便是 选取器的优先级 ,每条选取器的规则都有其权重,权重大的会覆盖掉权重小的,非常多CSS显现问题的场景,都是某处定义了一个更高权重的规则,引起此处规则不生效。

按照样式所在位置,对元素的影响相关系:内联样式(标签内style形式) > style标签 > link标签。

另一一点必须重视的是 !improtant ,凡是属性值后加上了 !important ,那样它的值不会被其他值替换。

权重等级

每一个选取器在权重级别中都有自己泾渭分明的位置。按照选取器种类的区别能够分为四类,决定了四种区别等级的权重值。

行内样式,指的是html文档中定义的style

行内样式包括在你的html中 对你的元素产生直接功效例如:

<h1 style="color: #fff;">header</h1>

ID选取

Id是元素的一种标识,例如#div

类,属性选取器和伪类选取

这一类包含各样class,属性选取器,伪类选取例如 :hover,:focus等等。

元素和伪元素

元素跟伪元素选取器,例如:before 与 :after.

伪元素选取器只包括以下几种:

::after::before::first-letter::first-line::selecton

权重记忆口诀

从0起始,一个 行内样式+1000 ,一个 id+100 ,一个 属性选取器/class伪类+10 ,一个元素名,伪元素+1

body #content .data img:hover

最后的权重值是0122;#content是一个id选取器加了100,.data是一个class类选取器加了10,:hover伪类选取器加了10, body和img是元素加了1 。仔细参阅【CSS Specificity

css权重规则

1、基本规则

相同的权重:以后面显现选取器为最后规则

区别的权重:权重值高则生效

<section class="weight"> <style> .weight #weightP { color: red; // 0110 } .weight p#weightP { color: gray; // 0111 生效 } #weightP { color
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-8-21 08:04:36 | 显示全部楼层
你的话语如春风拂面,温暖了我的心房,真的很感谢。
回复

使用道具 举报

0

主题

844

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-10 01:48:26 | 显示全部楼层
你的努力一定会被看见,相信自己,加油。
回复

使用道具 举报

2667

主题

4520

回帖

9914万

积分

论坛元老

Rank: 8Rank: 8

积分
99140547
发表于 5 天前 | 显示全部楼层
谷歌网站排名优化 http://www.fok120.com/
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-3 17:31 , Processed in 0.074085 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.