美文网首页
CSS从右往左解析到底好在哪里

CSS从右往左解析到底好在哪里

作者: 刘凯gg | 来源:发表于2019-03-19 10:23 被阅读0次

假如有如下的一段HTML:

和如下的CSS:

假如我们的CSS解析器是从左往右进行匹配的,那么会生成如下的style rules: 

首先,#div1 .c .d {} .f .c .d {}.c .d{}这三个选择器里面都含有 .c .d{}这么一个公用样式,所以哪怕是我们的DOM节点明确了是在#div1下面都必须对style rules进行全部的匹配查找,这样一来基本上可以说是每一个DOM节点都必须完全遍历一遍style rules,不然搞不好就会漏掉一些公用样式之类的,所以想着将层级写的更加详细就能去掉很多不对应的CSS选择器的索引路径的就不要想了,不管你写的多细,你总是需要把整个style rules都遍历一遍,不然万一漏掉了某个公用样式不就思密达了?

那么如果我们换成从右向左进行解析就能够避免这种情况了么?请看下面这个style rules:

别的先不提,最少这个节点就少了很多嘛,哪怕我这里同样是需要全部遍历一遍就冲着减少了这么多个节点也要从右往左进行解析啊!

更重要的是,只要有公用样式,那么选择器最右边的那个类型选择器一定是相同的,如此公共样式就很自然的都集中到一个分支上,这个时候我们完全可以将其他不匹配的路径全部去掉而不用担心会漏掉某些个公用样式了。虽然当这颗CSS树在遍历的时候还有有部分节点会遍历到最后才能确定到底是不是匹配的,但总的来说从右往左进行解析还是会比从左往右解析要少很多次的匹配,这样带来的效率提升是显而易见的!

同时,这也是不建议使用*通配符来进行样式匹配的原因:浏览器专门建立了一个反常规思维的从右往左的匹配规则就是为了避免对所有元素进行遍历,你直接一个通配符等于之前的工作都白做了。

最后,从右往左进行解析还有一个好处那就是从右往左进行匹配的时候,匹配的全部是DOM元素的父节点,而从左往右进行匹配的时候时候,匹配的全部是DOM元素的子节点,这样就避免了HTML与CSS没有下载完需要进行等待的情形。

以上就是我所理解的为什么CSS选择器是从右往左解析的原因,如有错误欢迎大家进行指正。

相关文章

  • CSS从右往左解析到底好在哪里

    假如有如下的一段HTML: 和如下的CSS: 假如我们的CSS解析器是从左往右进行匹配的,那么会生成如下的styl...

  • 初探VirtualDOM与Diff

    CSS的解析是从右往左逆向解析的(从DOM树的【下-上】解析比【上-下】解析效率高),嵌套标签越多,解析越慢。 D...

  • 有关CSS

    如何写出更好的CSS?(CSS是从右往左进行解析) ①避免使用*(全局)选择器。(耗费性能) ②CSS选择器的层级...

  • 浏览器如何解析 CSS 选择器?

    浏览器从右往左(也称为自底向上)解析 CSS 选择器,这样的匹配节点的方式可以快速、准确的与 render 树上的...

  • 【CSS】选择器解析规则

    当我们接触css选择起的时候,会认为浏览器解析css选择器是从左向右解析;其实不然浏览器解析css选择器是从右向左...

  • 杂七杂八

    css渲染:从右往左。 test div{}这种类型的写法效率极低。 两个内联元素之间有空格原理:inline-b...

  • 2.CSS

    //CSS基础 Cascsding Style Sheet(层叠样式表)CSS选择器1.浏览器的解析方式是从右向...

  • CSS 全解析实战(三)-CSS 基础

    1 选择器(1) 基本规则;是分隔符,而不是语句结束符 选择器浏览器是从右往左解析的,继续向左解析只是验证,如此一...

  • 古人写字为啥从右往左

    从右往左写字,在多行连续書的状态下,右手总会把已经写好的文字给掩盖住,而且右手腕或者衣袖还会把未干的墨汁碰...

  • 怎么从右往左Push页面

    https://stackoverflow.com/questions/2415772/push-viewcont...

网友评论

      本文标题:CSS从右往左解析到底好在哪里

      本文链接:https://www.haomeiwen.com/subject/oxnvmqtx.html