Skip to content

Instantly share code, notes, and snippets.

@bramus
Last active June 16, 2023 07:50
Show Gist options
  • Save bramus/4e53a24f6ac01e5844752af66ff4d49b to your computer and use it in GitHub Desktop.
Save bramus/4e53a24f6ac01e5844752af66ff4d49b to your computer and use it in GitHub Desktop.
click-and-drag-to-scroll.js
// @source https://codepen.io/thenutz/pen/VwYeYEE
const slider = document.querySelector(".cards");
let isDown = false;
let startX;
let scrollLeft;
slider.addEventListener("pointerdown", (e) => {
isDown = true;
slider.classList.add("active");
startX = e.pageX - slider.offsetLeft;
scrollLeft = slider.scrollLeft;
});
slider.addEventListener("pointerleave", () => {
isDown = false;
slider.classList.remove("active");
});
slider.addEventListener("pointerup", () => {
isDown = false;
slider.classList.remove("active");
});
slider.addEventListener("pointermove", (e) => {
if (!isDown) return;
e.preventDefault();
const x = e.pageX - slider.offsetLeft;
const walk = (x - startX) * 3; //scroll-fast
slider.scrollLeft = scrollLeft - walk;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment