The -webkit-overflow-scrolling CSS property controls whether or not touch devices use momentum-based scrolling for a given element.
Syntax
/* Keyword values */ -webkit-overflow-scrolling: auto; -webkit-overflow-scrolling: touch; /* Global values */ -webkit-overflow-scrolling: inherit; -webkit-overflow-scrolling: initial; -webkit-overflow-scrolling: revert; -webkit-overflow-scrolling: revert-layer; -webkit-overflow-scrolling: unset;
Values
auto-
Use "regular" scrolling, where the content immediately ceases to scroll when you remove your finger from the touchscreen.
touch-
Use momentum-based scrolling, where the content continues to scroll for a while after finishing the scroll gesture and removing your finger from the touchscreen. The speed and duration of the continued scrolling is proportional to how vigorous the scroll gesture was. Also creates a new stacking context.
Formal syntax
-webkit-overflow-scrolling = auto | touch
Examples
HTML
<div class="scroll-touch"> <p>This paragraph has momentum scrolling</p> </div> <div class="scroll-auto"> <p>This paragraph does not.</p> </div>
CSS
div {
width: 100%;
overflow: auto;
}
p {
width: 200%;
background: #f5f9fa;
border: 2px solid #eaf2f4;
padding: 10px;
}
.scroll-touch {
-webkit-overflow-scrolling: touch; /* Lets it scroll lazy */
}
.scroll-auto {
-webkit-overflow-scrolling: auto; /* Stops scrolling immediately */
}
Specifications
Not part of any standard. Apple has a description in the Safari CSS Reference.
See also
- CSS-Tricks article with demo
- Smashing Magazine - describing the effect of scroll bouncing and how it works on different web browsers
- Safari 13 Release notes: Indicates the addition of support for one-finger accelerated scrolling to all frames and
overflow:scrollelements, eliminating the need to set-webkit-overflow-scrolling: touch.