Mouse "click and drag" scrolling behaviour and CSS scroll-snap
Asked Answered
L

0

10

I'm building a simple slider animation that is controlled using native CSS scroll-snap and a scroll eventListener. You can see a working example here: https://codepen.io/juliangarnier/pen/10d5ad6a2d9bf2cbac8e8d2e289153fa I'm trying to add a click and drag behaviour on desktop, unfortunately CSS scroll-snap doesn't work well when the scrollLeft value is updated via JavaScript. It kind of works by setting scroll-snap-type: none; when the user starts dragging but remove the smooth snap animation.

I noticed that when simulating touch events in Chrome dev tool, the scroll animation works perfectly when using the mouse. I'm wondering if it's possible to re-create the same kind of touch-events emulation that Chrome dev tools uses in pure JS. Or if anyone managed to manually update the scroll position of a scroll-snap-type: x mandatory; element while keeping the snapping animation.

Edit:

Here is an updated version of the example with mouse events using

el.scrollTo({
  left: newScrollLeft,
  behavior: 'smooth'
})

on the mouseup event, and toggling the scroll-snap property.

https://codepen.io/juliangarnier/pen/b3bc58f943768f5276563ae7077e41e0?editors=0100

It's pretty close to what I want, but still missing the scroll momentum present when using a normal scroll gesture.

Lawrencelawrencium answered 26/1, 2021 at 13:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.