美文网首页
用CSS开启硬件加速提高网站性能

用CSS开启硬件加速提高网站性能

作者: 彬_仔 | 来源:发表于2016-10-17 14:51 被阅读0次

    你知道我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥功能,从而让渲染的性能更好吗?

    现在大多数电脑的显卡都支持硬件加速,因此,我们可以利用GPU的能力,在基于CPU运行的浏览器上,让我们的网站或应用的性能更好。

    在这篇文章中,我们将会在桌面端和移动端上使用CSS硬件加速。

    在桌面端和移动端用CSS开启硬件加速

    想知道如何让CSS动画在浏览器上运行的很流畅吗?

    CSS的animationstransforms以及transitions不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行。那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发该模式的CSS规则。

    现在,像Chrome、FireFox、Safari、 IE9+和最新版本的Opera都支持硬件加速,当它们检测到页面中某个DOM元素应用了某些CSS规则时就会开启,最显著的象征就是元素的3D变换。

    例如:

       .cube {
          -webkit-transform: translate3d(250px,250px,250px)
          rotate3d(250px,250px,250px,-120deg)
          scale3d(0.5, 0.5, 0.5);
       }
    

    在某些情况下,我们并不想要对元素应用3D变换的效果,但是仍然想发挥GPU加速的优势。这时候我们可以使用个简单的CSS属性来"欺骗"浏览器,触发硬件加速。

    虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎。非常的简单,用transform: translateZ(0);这个声明可以触发桌面端和移动端的GPU加速,这是一个非常有效的方式(包含了所有的浏览器前缀)

       .cube {
          -webkit-transform: translateZ(0);
          -moz-transform: translateZ(0);
          -ms-transform: translateZ(0);
          -o-transform: translateZ(0);
          transform: translateZ(0);
          /* Other transform properties here */
       }
    

    在 Chrome和Safari中,当我们使用CSStransforms或者animations时可能会出现页面闪烁的效果,下面的代码可以修复这个问题:

       .cube {
          -webkit-backface-visibility: hidden;
          -moz-backface-visibility: hidden;
          -ms-backface-visibility: hidden;
          backface-visibility: hidden;
    
          -webkit-perspective: 1000;
          -moz-perspective: 1000;
          -ms-perspective: 1000;
          perspective: 1000;
          /* Other transform properties here */
       }
    

    在webkit内核的浏览器中,另一个行之有效的方法是

       .cube {
          -webkit-transform: translate3d(0, 0, 0);
          -moz-transform: translate3d(0, 0, 0);
          -ms-transform: translate3d(0, 0, 0);
          transform: translate3d(0, 0, 0);
         /* Other transform properties here */
       }
    

    原生的移动端应用总是可以很好的运用GPU,这就是为什么它比网页应用(Web apps)表现更好的原因。硬件加速在移动端尤其有用,因为它可以有效的减少资源的利用。

    总结

    只对我们需要实现动画效果的元素应用以上方法,这能够提高2D渲染的性能,如果仅仅为了开启硬件加速而在任何元素上使用,那是不明智的。

    如果你需要获得最好的性能体验,小心的使用这些方法。过度的使用GPU可能会导致严重的性能问题,因为它增加了内存的使用––这将会减少移动端设备的电池寿命。

    你有在项目中使用过这些方法吗?如果有,请分享你的精彩案例吧。

    原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css

    相关文章

      网友评论

          本文标题:用CSS开启硬件加速提高网站性能

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