css 在滑块上拖动后停止单击事件

6tqwzwtp  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(155)

几天来我一直在努力解决这个问题。页面底部有一个滑块,上面有可点击的项目。我把滑块做成了可拖动的。但问题是当拖动停止时,点击操作也会发生在发生鼠标按下事件的项目上。我试着添加“指针事件”:“none”到内部项目拖动开始后,但在这种情况下draggint根本不工作。我如何解决这个问题的想法?
https://duolutions-wondrous-site.webflow.io/straudo-branding-naming
Webflow的只读链接:https://preview.webflow.com/preview/duolutions-wondrous-site?utm_medium=preview_link&utm_source=designer&utm_content=duolutions-wondrous-site&preview=9e5312190b70be978f65b8da04fbcefc&pageId=6377be41955fe23fb7c4bf33&workflow=preview

<script>
let isDown = false;
let startX;
let scrollLeft;
const slider = document.querySelector('.items');

const end = () => {
    isDown = false;
  slider.classList.remove('active');
}

const start = (e) => {
  isDown = true;
  slider.classList.add('active');
  startX = e.pageX || e.touches[0].pageX - slider.offsetLeft;
  scrollLeft = slider.scrollLeft;   
}

const move = (e) => {
    if(!isDown) return;
  e.preventDefault();
  const x = e.pageX || e.touches[0].pageX - slider.offsetLeft;
  const dist = (x - startX);
  slider.scrollLeft = scrollLeft - dist;
}

(() => {
    slider.addEventListener('mousedown', start);
    slider.addEventListener('touchstart', start);

    slider.addEventListener('mousemove', move);
    slider.addEventListener('touchmove', move);

    slider.addEventListener('mouseleave', end);
    slider.addEventListener('mouseup', end);
    slider.addEventListener('touchend', end);
})();

</script>
x8diyxa7

x8diyxa71#

没有到工作沙箱的链接,所以我不能肯定它是否有用,但是我注意到你没有使用Event.stopPropagation()。这应该会停止当前事件的传播。你可以阅读更多关于它的信息here

相关问题