在iPad等iOS设备上使用jQuery和ScrollTo插件实现自动滚动时出现闪烁现象,通常由以下几个原因导致:
$('#element').css({
'-webkit-transform': 'translateZ(0)',
'-webkit-backface-visibility': 'hidden'
}).scrollTo(target);
.scroll-container {
-webkit-overflow-scrolling: touch;
overflow-y: scroll;
height: 100vh;
transition: transform 0.3s ease-out;
}
// 使用requestAnimationFrame优化动画
function smoothScrollTo(target) {
const start = window.pageYOffset;
const distance = target - start;
const duration = 500;
let startTime = null;
function animation(currentTime) {
if (startTime === null) startTime = currentTime;
const timeElapsed = currentTime - startTime;
const run = ease(timeElapsed, start, distance, duration);
window.scrollTo(0, run);
if (timeElapsed < duration) requestAnimationFrame(animation);
}
function ease(t, b, c, d) {
t /= d/2;
if (t < 1) return c/2*t*t + b;
t--;
return -c/2 * (t*(t-2) - 1) + b;
}
requestAnimationFrame(animation);
}
document.addEventListener('touchmove', function(e) {
if ($(e.target).closest('.scroll-container').length) {
e.preventDefault();
}
}, { passive: false });
如果上述方法仍不能解决问题,可以考虑:
scroll-behavior: smooth
通过以上方法,应该能够显著减少或消除iPad上的滚动闪烁问题。
没有搜到相关的文章