The scroll-margin-bottom property sets the scroll margin on the bottom edge of a snap target. That outset enlarges the scroll snap area used when this box snaps to the snapport.
It is a physical longhand: it always targets the bottom edge, even if writing mode changes. It is not inherited. The initial value is 0. It is one side of the scroll-margin shorthand. Pair it with scroll-snap-type and scroll-snap-align.
Physical longhand.
Standard-track and Baseline Widely available. Prefer scroll-margin-block-end when the layout may switch writing mode. Accepts a length only — not a percentage.
If you snap to start, a bottom-only margin may look like it does nothing. Match the margin to the snapped edge.
%
Percentages are not valid
Use lengths only. 40% is not a valid scroll-margin-bottom value.
logical
Always bottom, not block-end
In vertical writing modes, “bottom” may not be the block-end edge. Prefer scroll-margin-block-end for writing-mode-safe layouts.
vs
Not the same as scroll padding
scroll-padding-bottom insets the container’s snapport. This property expands the target’s snap area.
Compatibility
Browser Support
scroll-margin-bottom is a browser layout property for scroll snap. Node.js, Deno, and Bun do not apply it.
✓ Baseline · Widely available since 2021
scroll-margin-bottom
Chrome 69+, Firefox 68+, Safari 14.1+, Edge 79+, Opera 56+, Samsung Internet 10.1+. Internet Explorer does not support it.
97%Modern browsers
Google Chrome69+
Full support
Mozilla Firefox68+
Full support
Apple Safari14.1+
Full support
Microsoft Edge79+
Full support
Opera56+
Full support
Samsung Internet10.1+
Full support
Internet ExplorerNo support
Not supported
scroll-margin-bottomWidely supported
Bottom line: Safe for modern scroll-snap UIs. Skip Internet Explorer. Pair with scroll-snap-type and usually scroll-snap-align: end.
Remember
Key Takeaways
Role: set a scroll margin on the bottom edge of a snap target only.
Values: lengths such as 40px or 1rem. No percentages.
Initial value:0. Not inherited. Physical side of the scroll-margin shorthand.
Tip: pair with scroll-snap-align: end, or use scroll-margin-block-end for logical layouts.
One line:scroll-margin-bottom gives a snap target breathing room on its bottom edge — after scroll snap is already set up.
Frequently Asked Questions
It sets the scroll margin on the bottom edge of a snap target. That outset enlarges the scroll snap area so snapping can stop a little past the bottom edge.
The initial value is 0. There is no extra outset until you set one.
It mainly affects scroll snapping. You still need a scroll container with scroll-snap-type and a target with scroll-snap-align for the offset to show during snap scrolling.
scroll-margin-bottom is physical and always targets the bottom edge. scroll-margin-block-end is logical and follows the block axis, which can map to a different side in vertical writing modes.
No. Set it on the element that snaps. Percentages are not valid; use lengths such as px, rem, or em.
It is Baseline and widely available since April 2021: Chrome 69+, Firefox 68+, Safari 14.1+, Edge 79+, Opera 56+. Internet Explorer does not support it. It is a browser layout property, not a Node.js feature.