【问题标题】:CSS: is transition: left/top GPU accelerated?CSS:transition:left/top GPU 加速了吗?
【发布时间】:2012-03-28 13:06:15
【问题描述】:

我知道您可以强制 GPU 加速以通过对“transform”属性应用过渡来实现屏幕上元素的平滑动画,例如:

elem.style.transition = 'all 3s ease-out';
elem.style.transform = 'translateX(600px)';

但我想知道如果您将第二行替换为:

elem.style.left = '600px'; 

GPU 加速是否会/可以为“left”(或“top”)属性启动,还是必须在 transform 属性上?在我看来,它应该是 GPU 加速的,但我无法从我读过的任何文档中收集到最终答案。

【问题讨论】:

  • 为了让您的问题有机会得到回答,您必须将其缩小到具有特定图形子系统的特定操作系统上特定浏览器的特定版本。所有这些事情都会影响答案,因为这不是规范中详细说明的内容——这取决于特定操作系统/硬件上特定浏览器的实现者。有证据表明,某些浏览器在某些情况下使用 GPU 来加速某些 CSS 指令而不是其他指令,但即使这样也只能在上述术语中讨论。
  • 好吧,我不太确定...我不是在寻找特定操作系统/GPU/浏览器/等的答案,我正在寻找一个通用的答案许多不同的操作系统/GPU/浏览器/等可能正在访问我的网站。如果答案最终是“这取决于 - 所有操作系统/浏览器/等都以不同方式处理这个问题,所以不要依赖它”,那么这将是一个令人满意的答案。无论哪种方式,似乎有人已经从不同的角度做出了回应。
  • 在某些类型的硬件上运行时,您检查的答案回答了您对一个或可能两个浏览器的某些版本的问题。也许这就是您要寻找的东西,但是您的问题比那个问题要笼统得多,这就是为什么我说必须在特定硬件上的特定实现的上下文中回答它的原因。绝对没有说用 javascript 设置 left 属性并触发 CSS 转换不能或不会使用硬件加速 - 因此问题是任何浏览器在任何情况下目前是否都可以。
  • 只是为了向您展示这会变得多么复杂,在 Mac 上运行相同的浏览器内核 (Safari),iPhone 2、iPhone 3s 和 iPod Touch 都可以提供不同级别的硬件加速不同的 CSS3 过渡。即使在同一个浏览器系列中,它也是非常特定于实现的,从一个浏览器到另一个浏览器,从一个浏览器版本到另一个浏览器版本更是如此。

标签: css webkit css-transitions


【解决方案1】:

【讨论】:

  • 太棒了!似乎在您发布的最后一个链接的后续评论中回答了这个问题。谢谢!
  • @knutole 非常好的链接。谢谢!
【解决方案2】:

我收集到的共识是,只有 translate3d 属性在移动设备(例如 Mobile Safari)上是硬件加速的。

Further Reading.

【讨论】:

  • 是的,正是这个页面激发了我发布这个问题。它将每隔几毫秒更改一次 left/top 的基于计时器的方法与使用 transition/transform 的基于 CSS3 过渡的方法进行对比,但不幸的是它忽略了 left/top 与“transition”的组合。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-17
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多