The overscroll-behavior-x property sets what the browser does when scrolling hits the physical horizontal edge of a scroll container — left and right. Unlike the logical longhands, it does not flip with writing-mode.
Use it on carousels, tab strips, and wide tables so sideways overscroll does not move a parent scroll area. Pair it with overflow-x: auto. For both axes at once, use overscroll-behavior. For the logical inline axis, use overscroll-behavior-inline.
Limited availability.
Not deprecated and not experimental, but MDN marks it Limited availability: Safari support starts at 16, and the newer chain value is missing in Safari and older Chromium/Firefox builds.
Bottom line: Safe for auto, contain, and none in current evergreen browsers and Safari 16+. Treat chain as Limited availability. Internet Explorer has no support.
Remember
Key Takeaways
Role: control overscroll at the physical left and right edges of a scroll container.
Common pick:contain for carousels and tabs; none when bounce must stop too.
Initial value:auto. Not inherited. Needs a horizontal scroll container.
One line:overscroll-behavior-x decides whether left/right overscroll chains out of a nested horizontal scroll box.
Frequently Asked Questions
It controls what happens when scrolling reaches the physical left or right edge of a scroll container. It always targets the horizontal axis, regardless of writing mode.
It is when scrolling past the left or right edge of one box continues scrolling a parent or the page behind it. contain and none stop that on the X axis.
Use contain to stop horizontal scroll chaining while still allowing local bounce. Use none when you also want to disable bounce and side-swipe navigation effects.
overscroll-behavior-x always means left and right. overscroll-behavior-inline follows writing mode, so it is horizontal in English but vertical in vertical writing modes.
No. Set it on the scroll container itself. The initial value is auto.
Chrome 63+, Firefox 59+, Safari 16+, and Edge 18+ support auto, contain, and none. The newer chain value needs Chrome 150+, Firefox 157+, or Edge 150+, and Safari does not support it yet. It is a browser CSS property, not a Node.js feature.