11

我正在构建一个使用 requestAnimationFrame 进行视差滚动的网站。有多个部分,每个部分都有一个全尺寸的背景图像和一些中间和前景图像。我已经设法通过 requestAnimationFrame 相对顺利地获得了这个动画,但动画中仍然偶尔会出现抖动。

通过在帧模式下查看 Chrome 的时间线,我可以看到导致“卡顿”的进程被标记为“图像解码”。此外,一旦动画完成一次,卡顿就不会再次发生。

似乎大多数浏览器现在都推迟了对尚未显示的图像的解码。有没有一种方法可以在用户不可见的情况下预解码(不仅仅是预加载)图像?

4

2 回答 2

1

该问题可能与滚动出/进入视图的图像有关。

来自http://creativejs.com/resources/requestanimationframe/

还暗示浏览器可以选择基于负载、元素可见性(被滚动到视图之外)和电池状态来优化 requestAnimationFrame 的性能。

同样来自W3C 草案

ISSUE-4 我们是否希望允许将元素传递给 requestAnimationFrame,以便在滚动出视图时限制或暂停影响给定元素的动画?

确保您没有为每个 onscroll 事件启动 requestAnimationFrame 循环,因为这可能会导致问题。这在这个单独的帖子中有详细描述

关于请求动画帧的问题

于 2012-11-11T09:47:52.947 回答
0

我通过消除检查元素是否在屏幕上的行来解决这个问题,这很可能与浏览器做同样的事情,只是效果很差。

于 2012-11-15T14:34:04.323 回答