CSS scroll-snap-stop Property
Description
The scroll-snap-stop property controls how strictly a snap point is honored during inertial or high-velocity scrolling. It lets authors indicate that a particular child (or snap candidate) should not be skipped when the user flicks or quickly scrolls through a snap container; instead, the scrolling motion will decelerate and come to rest at that snap position if the property requires it. In practice this changes the behavior of the scroll container’s natural momentum so that certain important items (for example, the first item in a carousel or a critical step in a sequence) reliably become the final resting point.
This property works in the context of CSS Scroll Snap and is meaningful only when snapping is enabled on the container; it complements how the container is configured via scroll-snap-type and how individual children declare their preferred snap alignment using scroll-snap-align. While snap type and align determine whether and where snapping can occur, scroll-snap-stop influences whether a particular candidate must be considered even if the scrolling momentum would normally carry past it. Because of that relationship, it’s often used sparingly — on a few key children — rather than on every snap point.
From a UX perspective, this property helps prevent accidental overscroll past important content while preserving a smooth, momentum-driven feel for other elements. It’s useful in carousels, step-based interfaces, or onboarding flows where landing on a specific item is important for comprehension or interaction. However, overusing it can make rapid navigation feel “sticky” or sluggish, since many forced stops interrupt quick gestures; balance is important to maintain both discoverability and responsiveness.
On implementation and accessibility, consider how forced snap stops interact with keyboard and programmatic scrolling, focus management, and animations. When a forced stop aligns with interactive content (like a form field or focusable control), ensure that focus shifts and announcements are handled predictably so screen reader users are not disoriented. Also be mindful of performance on low-power devices: requiring additional stops can increase the number of scroll events and layout checks the browser performs during momentum scrolling.
Definition
- Initial value
- normal
- Applies to
- all elements
- Inherited
- no
- Computed value
- as specified
- Animatable
- yes
- JavaScript syntax
- object.style.scrollSnapStop
Interactive Demo
The effect of this property can be noticed on devices with a touchpad. Try to scroll through all items with a single swing. Value 'normal' should pass through all pages, while 'always' will stop at the second page.
Syntax
scroll-snap-stop: normal | always
Values
- normalWhen the visual viewport of this element's scroll container is scrolled, it may "pass over" possible snap positions.
- alwaysThe scroll container must not "pass over" a possible snap position; and must snap to the first of this elements' snap positions.
Example
Browser Support
The following information will show you the current browser support for the CSS scroll-snap-stop property. Hover over a browser icon to see the version that first introduced support for this CSS property.
This property is supported by all modern browsers.
Desktop
Tablets & Mobile
Last updated by CSSPortal on: 1st January 2026
