有人刚刚在IRC上问过这个问题:将document.body
设置为使用translateZ(0)
是否可行或可行,以及它的好处或缺点是什么。
虽然他实际上并没有变形/动画/移动/缩放身体本身,但他的逻辑主要是将整个文档的渲染/重绘工作卸载到他的GPU上并通过继承来处理DO变化的位。
我的猜测是它的好处很少而且缺点会更多 - 即影响cleartype / kerning,使其基于芯片组实现呈现不一致,使其在OSX等VirtualBox中失败并可能使某些浏览器崩溃,(取决于发生的事情,例如。node-webkit
) - 所以我的建议是保留translateZ
用于以特定方式移动/改变的元素。此外,如果有单个点要锚定,而不是整个文档,调试问题等会更容易。但是......我错了吗?
对浏览器有更深入了解的人可以了解一下这里的最佳实践,以及当GPU处理元素时幕后发生的事情。
答案 0 :(得分:0)
变换:translateZ(0);声明触发现代桌面和移动浏览器中的GPU加速。这似乎是触发GPU加速的最有效方式。这适用于使用现代CSS属性,例如框阴影,插入框阴影,文本阴影和CSS动画。这减轻了客户端CPU的压力,并允许图形处理器处理繁重的工作。请记住,在某些情况下,客户端GPU可能效率较低或不存在。如果您使用的是polyfill,例如CSSPIE,您最初的反应可能是将此用于需要进行pollyfill注入的浏览器,考虑到不支持CSS3的浏览器不识别translate属性,这是不正确的。