前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提升CSS渲染性能的骚操作

提升CSS渲染性能的骚操作

作者头像
舒克
发布2021-06-16 16:30:34
8750
发布2021-06-16 16:30:34
举报

考核内容: CSS渲染

题发散度: ★★

试题难度:

看看大家的选择

解题:

如何使css的渲染效率更高效,也就是如何加快css的渲染速度

先做一个引入。当浏览器解析HTML时首先构造一个内部文件树来代表所有显示的元素。然后浏览器根据标准的CSS级联、继承和排序规则,为元素指定匹配的各种样式。CSS搜索引擎通过样式规则为每个元素找到匹配的样式。该引擎由右至左评估每个规则,从最右边的选择器开始(称为“键”【Key】),并通过移动每个选择器,直到找到一个匹配或丢弃的规则。

例如:

代码语言:javascript
复制
ul li a{......}

一般来说,目标选择器有四种:ID,class,标签和通用符。

他们可以单独使用也可以组合使用。不过渲染速度各不相同。

ID的渲染速度是最快的,

代码语言:javascript
复制
#menu{……}

但是当ID也其他标签组合的话他的渲染速度就有可能变得很低。

代码语言:javascript
复制
#menu li{……}

为什么呢?

因为li是最先被读取的为不是#menu,就是要先读取页面中的所有li然后在判断其上一级有没有#menu。

所以:

  • 尽量减少使用CSS子代选择器的嵌套

通配符。*会遍历所有的标签

代码语言:javascript
复制
 *{margin:0; padding:0}

如果这样写,页面中所有的标签的margin全是0;padding也是0;

这样写的问题是:

  遍历会消耗很多的时间,如果你的HTML代码写的不规范或是某一签标没有必合,这个时间可能还会更长;

建议的的解决办法:

不要使用*;而是把你常用到的这些标签进行处理;

例如:

代码语言:javascript
复制
body,li,p,h1{margin:0; padding:0}
  • 减少或不用通配符来作为键的规则。
  • 一个页面上少用绝对定位

绝对定位(position:absolute )是网页布局中很常用到的,特别是作一些浮动效果时,也会让页面看起来非常的酷。但网页中如果使用过多的绝对定位,会让你的网页变得非常的慢

  • 避免使用CSS表达式

举个css表达式的例子

代码语言:javascript
复制
font-color: expression( (new Date()).getHours()%3 ? “#FFFFFF" : “#AAAAAA" );

这个表达式会持续的在页面上计算样式,影响页面的性能。并且css表达式只被IE支持。

在线测试:

答案:

代码语言:javascript
复制
 A. 尽量使用CSS子代选择器尽量多的嵌套
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 迈向前端工程师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档