用CSS开启硬件加速来提高网站性能(转)
翻译文章,原文地址:http://blog.teamtreehouse.com/increase-your-sites-performance-with-hardware-accelerated-css。
你知道我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥功能,从而提升性能吗?
现在大多数电脑的显卡都支持硬件加速。鉴于此,我们可以发挥GPU的力量,从而使我们的网站或应用表现的更为流畅。
在桌面端和移动端用CSS开启硬件加速
CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行。那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发的CSS规则。
现在,像Chrome, FireFox, Safari, IE9+和最新版本的Opera都支持硬件加速,当它们检测到页面中某个DOM元素应用了某些CSS规则时就会开启,最显著的特征的元素的3D变换。
例如:
.cube {
-webkit-transform: translate
3
d(
250px
,
250px
,
250px
)
rotate
3
d(
250px
,
250px
,
250px
,
-120
deg)
scale
3
d(
0.5
,
0.5
,
0.5
);
}
|
可是在一些情况下,我们并不需要对元素应用3D变换的效果,那怎么办呢?这时候我们可以使用个小技巧“欺骗”浏览器来开启硬件加速。
虽然我们可能不想对元素应用3D变换,可我们一样可以开启3D引擎。例如我们可以用transform: translateZ(0); 来开启硬件加速 。
.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 and Safari中,当我们使用CSS transforms 或者 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: translate
3
d(
0
,
0
,
0
);
-moz-transform: translate
3
d(
0
,
0
,
0
);
-ms-transform: translate
3
d(
0
,
0
,
0
);
transform: translate
3
d(
0
,
0
,
0
);
/* Other transform properties here */
}
|