美文网首页
transition做动画卡顿问题

transition做动画卡顿问题

作者: 独钓寒江月 | 来源:发表于2020-04-29 11:23 被阅读0次

    1.在使用transition做动画处理的时候,尽量使用transform来代替height,top,margin属性。

    原因:CSS3新添加的Transform不会引起文档的重新布局。简而言之就是浏览器的主线程会计算样式布局等,然后交给GPU去渲染,在这个过程是浏览器将位图加载到 GPU 的内存是比较耗时的,而修改例如height的transition动画过程中,每一帧都对布局有影响从而浏览器会重新布局然后交给GPU重新渲染。但是Transform则不会影响,浏览器只需要一次生成这个元素的位图,并在动画开始的时候将它提交给GPU去处理 。之后,浏览器不需要再做任何布局、 绘制以及提交位图的操作。自然提升了速度~

    2.使用开启GPU硬件加速模式

    使用方法

    webkit-transform: translateZ(0);
    -moz-transform: translateZ(0);
    -ms-transform: translateZ(0);
    -o-transform: translateZ(0);
    transform: translateZ(0);
    
    或
    
    webkit-transform: translate3d(0,0,0);
    -moz-transform: translate3d(0,0,0);
    -ms-transform: translate3d(0,0,0);
    -o-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
    

    我觉得最初的设计可能是为了加速渲染3D样式而启动的加速模式,但我们设置值为0后,并没有真正使用3D效果,从而使用另一种方式开启了GPU硬件加速模式。

    最后我发现transition过度时有图片加载也会卡顿,要提前加载好图片

    3.学习使用Performance进行动画性能分析

    Chrome的DevTool中TimeLine的Frame模块然后看FPS值

    FPS是指画面每秒传输帧数,数值越高越流畅

    一般情况每秒 60 帧是最适合人眼的交互,小于 60,人眼能明显感觉到。

    修改前最高FPS和修改后最高FPS,效率有明细提升

    image image

    更多参考:

    前端性能优化之Performance神器

    Performance - 前端性能监控利器

    相关文章

      网友评论

          本文标题:transition做动画卡顿问题

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