Scroll Margin

Set the scroll margin for snapping & alignment.

Widely available

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

Chrome
Edge
Firefox
Safari

Usage

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-x-m">
<div class="p-r fs-0 p-6 sm-6 ssa-s">
<div class="i-0 p-a zi-0 w-full">
<div class="w-full h-full"></div>
</div>
<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">
<div class="i-0 p-a zi-0 w-full">
<div class="w-full h-full"></div>
</div>
<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">
<div class="i-0 p-a zi-0 w-full">
<div class="w-full h-full"></div>
</div>
<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">
<div class="i-0 p-a zi-0 w-full">
<div class="w-full h-full"></div>
</div>
<img class="p-r zi-10 h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Scroll Margin Top

Try scrolling through the image container to see how it behaves.
<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 pt-6 smt-6 ssa-s">
<div class="l-0 p-a r-0 t-0 h-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pt-6 smt-6 ssa-s">
<div class="l-0 p-a r-0 t-0 h-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pt-6 smt-6 ssa-s">
<div class="l-0 p-a r-0 t-0 h-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pt-6 smt-6 ssa-s">
<div class="l-0 p-a r-0 t-0 h-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Scroll Margin Right

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-x-m">
<div class="p-r fs-0 pr-6 smr-6 ssa-s">
<div class="b-0 p-a r-0 t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pr-6 smr-6 ssa-s">
<div class="b-0 p-a r-0 t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pr-6 smr-6 ssa-s">
<div class="b-0 p-a r-0 t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pr-6 smr-6 ssa-s">
<div class="b-0 p-a r-0 t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
</div>
</div>

Scroll Margin Bottom

Try scrolling through the image container to see how it behaves.
<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 class="l-0 p-a r-0 h-6"></div>
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
<div class="l-0 p-a r-0 h-6"></div>
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
<div class="l-0 p-a r-0 h-6"></div>
</div>
<div class="p-r fs-0 pb-6 smb-6 ssa-s">
<img class="h-40 w-80" src="/img/coast.jpg" />
<div class="l-0 p-a r-0 h-6"></div>
</div>
</div>
</div>

Scroll Margin Left

<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 pl-6 sml-6 ssa-s">
<div class="b-0 l-0 p-a t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pl-6 sml-6 ssa-s">
<div class="b-0 l-0 p-a t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pl-6 sml-6 ssa-s">
<div class="b-0 l-0 p-a t-0 w-6"></div>
<img class="h-40 w-80" src="/img/coast.jpg" />
</div>
<div class="p-r fs-0 pl-6 sml-6 ssa-s">
<div class="b-0 l-0 p-a t-0 w-6"></div>
<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:sm-*
Small640px
md:sm-*
Medium768px
lg:sm-*
Large1024px
xxl:sm-*
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:sm-*

Negative Values

Use negative variants to apply negative scroll margins.

Use the -- syntax to apply negative numeric values.

Syntax:sm--*