使用浏览器的开发者工具来检查 CSS 的动画性能
2017-06-11 08:46
459 查看
众所周知,CSS动画性能极好。 虽然这只是针对少量元素上的简单动画而言,如果你在编写动画代码时没有考虑性能以及增加更多的复杂性,网站用户很快就会注意到并且可能会因此生气。
在本文中,我将介绍一些有用的浏览器开发工具的功能,使您能够在使用CSS进行动画处理时知道究竟发生了什么。 这样一来,当一个动画看起来有点不连贯时,你就会有一个更好的关于为什么和怎么做的想法来解决它
要在Firefox中打开开发人员工具,请选择其中一个选项:
右键单击您的网页,然后在弹出的上下文菜单中选择“检查元素(Inspect Element )”
如果您使用键盘,请在Windows和Linux系统上按下 Ctrl + Shift + I,在OS X系统上按下Cmd + Opt + I。
瀑布(Waterfall )选项卡的顶部有一个摘要部分,并包含详细的说明。 在这两种情况下,数据都是彩色编码的:
黄色条指JavaScript操作
紫色条指计算HTML元素的CSS样式(重新计算样式)和页面布局(布局)。 布局操作对于浏览器执行来说相当昂贵,因此如果您对涉及重复布局(也称为页面重排(reflows),例如
绿色条指将您的元素绘制到一个或多个位图中(绘制)。 动画属性如
紫色矩形框在一个无限循环中移入并移出视图。
我通过为<div>元素添加margin-left动画属性来完成此操作,该div表示屏幕上的紫色矩形框。 以下是@keyframes动画块的内容:
我从这个动画得到的性能数据看起来像下面这样:
帧速率从视觉上看起来有些层次不齐,帧速率的平均值是44.82 fps,有点低。
另外,请注意在动画过程中发生的所有布局和绘画操作。 这些是浏览器在其主线程上执行的代价高昂的操作,对性能有负面影响。
现在,帧速率变高(56.83 fps),而且瀑布面板显示没有昂贵的布局和绘制操作。
此外,如果打开开发人员工具的“查看器”选项卡,请访问“动画”面板并将鼠标悬停在动画名称上,您可以看到如下:
与动画名称有关的信息框指出所有动画都被优化,这对您的网站访问者来说是个好消息。
我不会详细介绍网络动画性能的硬件加速,但如果您想深入挖掘,请查看下面列出的资源。
CSS动画和转换性能:深入浏览器内部 作者Max Vujovic
动画与性能 作者Paul Lewis和Sam Thorogood
坚持仅合成器的属性和管理层计数 作者Paul Lewis
GPU组合CSS的技巧 作者Sara Souiedan
CSS will-change属性简介 作者Nick Salloum
动画CSS属性 来自MDN
在本文中,我将介绍一些有用的浏览器开发工具的功能,使您能够在使用CSS进行动画处理时知道究竟发生了什么。 这样一来,当一个动画看起来有点不连贯时,你就会有一个更好的关于为什么和怎么做的想法来解决它
在Firefox中探索性能工具
在本文中,我使用Firefox性能工具。 另一个有竞争力的性能工具是Chrome性能工具。 您可以根据喜好选择其中任意一款,因为这两款浏览器都提供了强大的性能特性。要在Firefox中打开开发人员工具,请选择其中一个选项:
右键单击您的网页,然后在弹出的上下文菜单中选择“检查元素(Inspect Element )”
如果您使用键盘,请在Windows和Linux系统上按下 Ctrl + Shift + I,在OS X系统上按下Cmd + Opt + I。
瀑布(Waterfall )选项卡的顶部有一个摘要部分,并包含详细的说明。 在这两种情况下,数据都是彩色编码的:
黄色条指JavaScript操作
紫色条指计算HTML元素的CSS样式(重新计算样式)和页面布局(布局)。 布局操作对于浏览器执行来说相当昂贵,因此如果您对涉及重复布局(也称为页面重排(reflows),例如
margin,
padding,
top,
left等)的属性进行动画处理,则结果可能响应缓慢。
绿色条指将您的元素绘制到一个或多个位图中(绘制)。 动画属性如
color,
background-color,
box-shadow等涉及昂贵的绘制操作,这可能是动画缓慢和用户体验差的原因。
紫色矩形框在一个无限循环中移入并移出视图。
我通过为<div>元素添加margin-left动画属性来完成此操作,该div表示屏幕上的紫色矩形框。 以下是@keyframes动画块的内容:
@keyframes slide-margin { 100% { margin-left: 0; } }
我从这个动画得到的性能数据看起来像下面这样:
帧速率从视觉上看起来有些层次不齐,帧速率的平均值是44.82 fps,有点低。
另外,请注意在动画过程中发生的所有布局和绘画操作。 这些是浏览器在其主线程上执行的代价高昂的操作,对性能有负面影响。
现在,帧速率变高(56.83 fps),而且瀑布面板显示没有昂贵的布局和绘制操作。
此外,如果打开开发人员工具的“查看器”选项卡,请访问“动画”面板并将鼠标悬停在动画名称上,您可以看到如下:
与动画名称有关的信息框指出所有动画都被优化,这对您的网站访问者来说是个好消息。
只动画CSS Opacity, Transforms和Filters
你以前可能听说过这样的建议,但是为了以防万一,这一点值得我们再去考虑一遍:如果你想让动画运行流畅,那么只能动画CSS opacity, transforms和filters属性。 动画其他的一切属性将使你的浏览器承受在很短的时间内执行昂贵的任务的压力,这往往不会产生最好的结果。我不会详细介绍网络动画性能的硬件加速,但如果您想深入挖掘,请查看下面列出的资源。
资源
高性能动画 作者Paul Lewis和Paul IrishCSS动画和转换性能:深入浏览器内部 作者Max Vujovic
动画与性能 作者Paul Lewis和Sam Thorogood
坚持仅合成器的属性和管理层计数 作者Paul Lewis
GPU组合CSS的技巧 作者Sara Souiedan
CSS will-change属性简介 作者Nick Salloum
动画CSS属性 来自MDN
相关文章推荐
- 前端动画性能分析-使用 Chrome 开发者工具
- 使用SpringMVC注解时浏览器开发者工具中出现404问题以及解决方法
- Google Chrome 浏览器 开发者工具 使用教程
- 爬虫 Http请求,urllib2获取数据,第三方库requests获取数据,BeautifulSoup处理数据,使用Chrome浏览器开发者工具显示检查网页源代码,json模块的dumps,loads,dump,load方法介绍
- 浏览器开发者工具基本使用教程
- 浏览器调试工具网页性能分析中的使用
- 前端性能优化:尽可能使用CSS动画
- 前端性能优化:尽可能使用CSS动画
- Google Chrome 浏览器 开发者工具 使用教程
- 超棒的跨浏览器纯CSS动画实现 Animate.css使用方法
- Firefox 插件 JSview是一套比较实用的JS,CSS文件查看工具,很方便,很快捷地查看页面引用了哪些文件,作为Web前端开发者是一套必备的插件,由于Firefox升级过快,插件很快不兼容了,这里对插件做了一些调整,可以兼容最新Firefox浏览器(目前FireFox 21)
- Google Chrome 浏览器 开发者工具 使用教程
- 使用用Chrome开发者工具(Timeline、Profiler)做JavaScript性能分析
- java静态代码检查工具:JavaNCSS的使用
- 浏览器开发者工具基本使用教程
- chrome 浏览器 开发者工具 性能检测 参数解释
- 使用chrome开发者工具中的performance面板解决性能瓶颈
- chrome 开发者工具使用详情
- 静态代码检查工具 cppcheck 的使用