CSS选择器优先级和权重以及浏览器怎样解析CSS选择器

(1)选择器
1.ID选择器
2.Class选择器
3.标签选择器
4.相邻选择器(h1+p)
5.子元素选择器(h1>p)
6.后代选择器(.class ol li a)
7.通配选择器(*)
8.属性选择器(a[rel = ’external’],例如:为带有title属性的所有元素设置样式)
9.伪类选择器                            
    1)例如:链接不同活动状态           
                        a:link  活动
                        a:visited  已访问
                        a:hover 鼠标移动至链接                
                        a: focus 键盘移动至链接
                        a: active 选定链接
    2)(a:hover,li:nth--child(n))规定属于其父元素的第n个子元素的每个li

可继承的属性:font-size, font-family, color
不可继承的样式:border, padding, margin, width, height

(2)优先级
    (!Important>id>class>标签名)!important比内联优先级高,内联优先级比id优先级高
    1. !important声明的样式优先级最高,如果冲突再进行计算。
    2. 如果优先级相同,则选择最后出现的样式。
    3. 继承得到的样式的优先级最低。
(3)怎么确定权重
权重记忆口诀。从0开始,一个行内样式+1000,一个id+100,一个属性选择器/class或者伪类+10,一个元素名,或者伪元素+1.比如
(4)选择器匹配规则
    浏览器读取你的选择器,遵循的原则是从选择器的右边到左边读取。换句话说,浏览器读取选择器的顺序是由右到左进行
·  避免普遍规则
·  不要在ID选择器前加标签名或类名
·  不要在类名选择器前加标签名
·  尽可能使用具体的类别
·  避免使用后代选择器
·  标签分类规则中不应该包含一个子选择器
·  子选择器的问题
·  借助相关继承关系
·  使用范围内的样式表

浏览器是怎样解析CSS选择器的?
CSS选择器的解析是从右向左解析的。若从左向右的匹配,发现不符合规则,需要进行回溯,会损失很多性能。
若从右向左匹配,先找到所有的最右节点,对于每一个节点,向上寻找其父节点直到找到根元素或满足条件的
匹配规则,则结束这个分支的遍历。两种匹配规则的性能差别很大,是因为从右向左的匹配在第一步就筛选掉
了大量的不符合条件的最右节点(叶子节点),而从左向右的匹配规则的性能都浪费在了失败的查找上面。
而在 CSS 解析完毕后,需要将解析的结果与 DOM Tree 的内容一起进行分析建立一棵 Render Tree,最终
用来进行绘图。在建立 Render Tree 时(WebKit 中的「Attachment」过程),浏览器就要为每个 DOM Tree
 中的元素根据 CSS 的解析结果(Style Rules)来确定生成怎样的 Render Tree。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值