我发现了一个简单的Codepen,它允许我拖动和滚动图像库。它工作正常,但我需要一种方法来添加“平滑抓取/滚动”到这个功能。基本上,我想在iPhone上模拟滚动。
有人能帮帮我吗。我是一个JavaScript的初学者。下面是代码的链接:Horizontal Click and Drag Scrolling with JS
const slider = document.querySelector('.items');
let isDown = false;
let startX;
let scrollLeft;
slider.addEventListener('mousedown', (e) => {
isDown = true;
slider.classList.add('active');
startX = e.pageX - slider.offsetLeft;
scrollLeft = slider.scrollLeft;
});
slider.addEventListener('mouseleave', () => {
isDown = false;
slider.classList.remove('active');
});
slider.addEventListener('mouseup', () => {
isDown = false;
slider.classList.remove('active');
});
slider.addEventListener('mousemove', (e) => {
if(!isDown) return;
e.preventDefault();
const x = e.pageX - slider.offsetLeft;
const walk = (x - startX) * 3; //scroll-fast
slider.scrollLeft = scrollLeft - walk;
console.log(walk);
});
先谢谢你了。
2条答案
按热度按时间unguejic1#
如果我没理解错的话,你是想模仿在iOS上发布滚动项目后,滚动项目会减慢到停止的方式。
1)首先,我们需要在
mousemove
事件监听器中添加以下两行来跟踪它被拖动时的速度:2)当拖动完成时,我们创建一个帧循环,以拖动速度保持滚动,每次迭代都会减慢速度,直到停止。
3)最后在用户开始与滚动项交互时取消动量循环
看看它在这里工作:
https://codepen.io/loxks/details/KKpVvVW
az31mfrm2#
你可以试试这个https://utsb-fmm.github.io/MobileLikeScroller/
我发现更自然的滚动。