我一直在用 JS+CSS 中的动画开发一个复杂的无限 2D 布局。除了在 iPhone 中滚动布局时图像会闪烁(我还没有在其他 iOS 中尝试过),我可以设法使一切正常工作。
我相信问题与改变滚动事件侦听器中容器的滚动有关,如下所示:
let main = document.getElementById('container');
main.addEventListener("scroll", event => {
let viewportWidth = document.documentElement.clientWidth + 1;
let viewportHeight = document.documentElement.clientHeight + 1;
main.scrollLeft = checkLimits(main.scrollLeft, 0, 3500 - viewportWidth);
main.scrollTop = checkLimits(main.scrollTop, 0, 2800 - viewportHeight);
});
我已经隔离了问题,在这里查看完整的代码。
我做了很多测试:隔离main.scrollTop
and main.scrollLeft
,将它们放在setInterval
/requestAnimationFrame
而不是和事件侦听器中,甚至绝望的测试,比如使用"touchend"
event 而不是"scroll"
)...但我无法摆脱闪烁,我会说它开始为立即执行第一条语句main.scrollLeft =
ormain.scrollTop =
。
这是一个不可避免的错误吗?请帮忙!