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

你知道我们可以在浏览器中用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可能会导致严重的性能问题,因为它增加了内存的使用––这将会减少移动端设备的电池寿命。

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

原文地址 Increase Your Site’s Performance with Hardware-Accelerated CSS

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 你知道我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥...
    彬_仔阅读 2,358评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,728评论 1 92
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,138评论 0 1
  • 在一片浑浑浊浊中,竟不知立冬了。 只知道雨从昨夜就开始下了。起床时,方知气温陡降。原来这一场雨,是应节气与季节而来...
    岷水若风阅读 146评论 1 1
  • 昏暗的洞穴里,潮湿闷热。 我慢慢睁开眼睛,真希望睁开后一切都还原成原样,我还是在快节奏的城市里负着不堪的压力上班,...
    陌月静花阅读 251评论 3 1