Scroll Snap Type

Set the scroll snap direction & strictness.

Widely available

This feature is well established and works across many devices and browser versions.

Chrome
Edge
Firefox
Safari

Usage

None

Disable any snapping behavior.

Try scrolling through the image container to see how it behaves.
<div class="o-h p-r">
<div class="d-f o-x-s g-6 p-6 sst-none">
<div class="p-r fs-0 p-6 sm-6 ssa-none">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Both Mandatory

Enable snapping in both horizontal and vertical directions.

<div class="o-h p-r">
<div class="d-f o-x-s g-6 p-6 sst-b-m">
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

X Mandatory

Enable snapping in the horizontal direction.

<div class="o-h p-r">
<div class="d-f o-x-s g-6 p-6 sst-x-m">
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

X Proximity

Enable snapping in the horizontal direction when scrolling slowly.

<div class="o-h p-r">
<div class="d-f o-x-s g-6 p-6 sst-x-p">
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Y Mandatory

Enable snapping in the vertical direction.

<div class="o-h p-r w-fc">
<div class="d-f o-y-auto fd-c g-6 h-96 p-6 sst-y-m">
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Y Proximity

Enable snapping in the vertical direction when scrolling slowly.

<div class="o-h p-r w-fc">
<div class="d-f o-y-auto fd-c g-6 h-96 p-6 sst-y-p">
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Responsiveness

Use breakpoint prefixes to target different screen sizes. Styles apply from the breakpoint & up.

Target viewport sizes with breakpoint prefixes.

sm:sst-*
Small640px
md:sst-*
Medium768px
lg:sst-*
Large1024px
xxl:sst-*
Extra Large1536px

Hover State

Apply styles conditionally on hover using the h: prefix.

Add the h: prefix to apply styles only when the user hovers over the element.

Syntax:h:sst-*