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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值