美文网首页
css3动画使用GPU加速

css3动画使用GPU加速

作者: 木中木 | 来源:发表于2019-09-30 14:59 被阅读0次

CSS3实现动画,可以实现不使用js,避免使用js主线程,阻塞主线程,下面我们看个很基本的动画

<div style="position: relative; height: 200px;">
     <div class="btn">测试按钮1234</div>
</div>
.btn{

    width: 200px;

    height: 50px;

    background: red;

    text-align: center;

    line-height: 50px;

    border-radius: 2px;

    margin-left: 50px;

    animation: myanimation 1s ease-in infinite;

    position: relative;

}

@keyframes myanimation {

    0% {

        left:0;

        top:0;

    }

    20% {  

        left:0;

        top:20px;

    }

    40% {

        left:0;

        top:40px;

    }

    60% {

        left:0;

        top:60px;

    }

    80% {

        left:0;

        top:80px;

    }

    100% {

        left:0;

        top:100px;

    }

}

这个基本的动画,但是整体动画存在卡顿,我们用performance检测一下,我们看到这里绿色部分就是resize repaint,不断触发回流重绘。其实可以通过tansform就可以了,我们修改下代码


1-1.png
@keyframes myanimation {
    0% {
        transform: translate(0,0)
    }
    20% {  
        transform: translate(0,20px)
    }
    40% {
        transform: translate(0,40px)
    }
    60% {
        transform: translate(0,60px)
    }
    80% {
        transform: translate(0,80px)
    }
    100% {
        transform: translate(0,100px)
    }
}

我们通过chrome的moretool中的rendering来查看本次就首次回流后,就没有再次触发过多的repaint操作。
那为什么没有触发repaint操作呢,因为tansform是交付给了GPU渲染,我们知道,页面初始化的时候,会先解析文本,形成dom节点树和css 样式树,再将两者结合形成渲染树,渲染每个layout的时候都会形成相应的图层,这个图层就是由GPU渲染完成,本文的示例就是处于复合图层中。
形成复合图层的条件有:
1.3D 或者 CSS transform
2.<video> 和 <canvas> 标签
3.CSS filters
4.元素覆盖时,比如使用了 z-index 属性


1-2.png 1-3.png
1-4.png

我们再放大一下可以看到每次动画的具体时间


1-5.png

能通过GPU加速的样式:

  • tansform
  • opacity
  • filter

相关文章

  • 无标题文章

    使用CSS3开启GPU硬件加速提升网站动画渲染性能 CSS3动画,抛物线运动 file文件上传

  • 3月份学习总结

    CSS3轮播图 CSS3动画可开启GPU硬件加速渲染动画, 因此效果更加流畅, 帧数更高, 但是很难判断和控制动画...

  • 前端开发遇到的坑和小技巧,持续总结

    1、利用GPU加速制作流畅的CSS3动画 https://www.qianduan.net/high-perfor...

  • css3动画使用GPU加速

    CSS3实现动画,可以实现不使用js,避免使用js主线程,阻塞主线程,下面我们看个很基本的动画 这个基本的动画,但...

  • 移动端性能优化

    尽量使用css3动画,开启硬件加速。 适当使用touch事件代替click事件。 避免使用css3渐变阴影效果。 ...

  • css3 硬件加速

    概念 CSS3 硬件加速又叫做 GPU 加速,是利用 GPU 进行渲染,减少 CPU 操作的一种优化方案。由于 G...

  • 使用css3实现动画来开启GPU加速

    参考文章:https://www.w3cplus.com/css3/introduction-to-hardwar...

  • 动画浅析

    在谈css3动画加速之前,先考虑几个问题: 1.我们为什么要做动画? 2.为什么推荐css3动画? 带着这两个...

  • 两张图解释CSS动画的性能

    在手机上使用CSS动画时很多时候会感到卡顿,然后网上很多教程说开启GPU加速 transform: transla...

  • css

    gpu加速 will-change:left -> 浏览器就知道left属性会变化,从而使用gpu加速优化性能。t...

网友评论

      本文标题:css3动画使用GPU加速

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