前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 CSS 变量是否对网站性能有影响,我做了个实验

使用 CSS 变量是否对网站性能有影响,我做了个实验

作者头像
Leecason
发布2022-07-13 14:19:55
7920
发布2022-07-13 14:19:55
举报
文章被收录于专栏:小李的前端小屋

CSS 变量自 Chrome 49 (March 3, 2016) 版本开始支持。

如果你还不了解 CSS 变量,推荐阅读 CSS 变量教程- 阮一峰的网络日志[1]

到如今,几乎所有的主流浏览器都已经支持了该特性。当然,IE11 肯定是不支持的。

使用 CSS 变量,可以很容易的实现网站主题换肤等功能。它的性能怎么样呢,因为涉及到计算,在页面上大量的使用,会不会增加页面的渲染时间呢?

我做了一个简单的 benchmark 测试,创建 5000 个 CSS 变量,来看看它究竟会不会减慢页面的渲染速度。

测试环境

步骤

  • 生成 5000 种颜色(Color)
  • 创建 10000 个 HTML 节点
  • 输出一份用静态的 CSS Class 改变节点颜色的 HTML 文件
  • 输出一份用动态的 CSS 变量 改变节点颜色的 HTML 文件
  • 在本地使用 node 启动 HTTP 服务,使用 Chrome 的 performance 工具分别测试文件 5 次

设备

  • Linux, Google Chrome 版本 92.0.4515.159 (Official Build) (64-bit)
  • 未登录 Google 账号,没有任何浏览器插件

测试工具

代码语言:javascript
复制
git clone git@github.com:fedek6/css-variables-benchmark.git
cd css-variables-benchmark
yarn
yarn build
yarn start:compiled [number of random colors] [reuse factor]

根据以上命令,会生成一个 bundle 的文件夹,里面有两个文件:staticdynamic 分别代表使用 CSS Class 的版本和 CSS 变量的版本。

接着可以使用 http-server 这个包和 Chrome 的 performance 工具来对这两个文件进行测试。

测试结果

使用 CSS 变量的 HTML 文件大小会更大,因为相比于使用静态 CSS 来说,会需要多生成一些 CSS 变量。

使用静态 CSS (毫秒)

次数

加载

脚本执行

渲染

绘制

系统

空闲

总计

1

33

4

329

17

110

4948

5441

2

31

3

317

12

113

4928

5404

3

28

3

351

19

117

4950

5468

4

29

4

314

14

117

4943

5421

5

31

4

332

18

112

4944

5441

使用 CSS 变量(毫秒)

次数

加载

脚本执行

渲染

绘制

系统

空闲

总计

1

33

3

381

16

110

4906

5449

2

38

2

358

20

114

4962

5494

3

36

2

371

24

106

4978

5517

4

36

2

321

11

106

4934

5410

5

33

3

353

22

108

4977

5496

结论

在 10000 个 HTML 节点上使用 5000 个 CSS 变量只比普通使用 CSS 慢 0.7% 。但是实验环境相比业务场景也显得比较简单。通过数据看来,仅仅通过使用 CSS 变量 并不会 显著降低 页面的 渲染速度。

但在某些场景下,可能还是得关注下性能问题,比如在 CSS 的 calc 函数中使用 CSS 变量或使用 JavaScript 频繁地更改 CSS 变量。

文章翻译自:原文链接[2] 测试源码:源码链接[3]

❤️支持

如果本文对你有帮助,点赞👍支持下我吧,你的「赞」是我创作的动力。

关于我,目前是字节跳动一线开发,工作四年半,工作中使用 React,业余时间开发喜欢 Vue。

参考资料

[1]

CSS 变量教程- 阮一峰的网络日志: https://www.ruanyifeng.com/blog/2017/05/css-variables.html

[2]

原文链接: https://blog.okopress.dev/css-variables-performance-benchmark-2021-f56cd26ae9f5

[3]

源码链接: https://github.com/fedek6/css-variables-benchmark

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小李的前端小屋 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试环境
    • 步骤
      • 设备
      • 测试工具
      • 测试结果
        • 使用静态 CSS (毫秒)
          • 使用 CSS 变量(毫秒)
          • 结论
          • ❤️支持
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档