Flexbox 存在性能问题吗?

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

Wilson Page 为 Smashing Magazine 撰写了一篇 非常棒的文章,深入探讨了一个真实网站及其团队用来构建它的所有酷炫的现代工具和技术。

对于布局,他们最初选择了 flexbox,但是……

随着应用程序的不断发展,我们发现性能变得越来越差。

我们在 Chrome 开发者工具的时间轴上花费了几个小时,并找到了罪魁祸首:令人震惊!——正是我们新的最佳朋友 flexbox。时间轴显示某些布局花费了近 100 毫秒;在没有 flexbox 的情况下重新设计我们的布局将此减少到 10 毫秒!

文章中有一些开发人员工具时间轴的对比截图。令人担忧,不是吗?

我正在与 Tim Kadlec 讨论此事。Tim 说他联系了团队,看看他们是否创建了简化的测试用例或是否有更多数据可以分享。不幸的是,他们没有。

也许我们可以找到这些数据。我构建了一个小的随机 flexbox 布局生成器。

查看 CodePen 上 Chris Coyier (@chriscoyier) 编写的 生成大量 Flexbox

滑动范围滑块即可重新生成随机 flexbox 布局。越向右,越多。到目前为止,我还没有发现任何特别费力的东西。但是,我在这里的小演示并不完全是“现实世界”。也许里面的图片有问题。也许使用 flexbox 属性 更改源顺序是费力的原因。也许 旧的 flexbox 是罪魁祸首。也许根本没什么好担心的。

如果您有任何关于如何复制 flexbox 周围的一些不良性能的想法,请随时分叉我的生成器,并添加/更改使之发生所需的内容。

我所知道的实际衡量性能的最佳方法是 Chrome 开发者工具 > 时间轴。然后点击“录制”按钮,滑动滑块,然后停止。然后在时间轴上查找较长的绘制时间。像这样

那里的紫色是布局,在这种情况下(到目前为止)很快。

我将更新此帖子

如果我们能够收集一些可靠的数据,我将使用最接近答案的内容更新此帖子,以回答这篇博文标题的问题。

更新:以及 这里我们来啦!