overscroll-behavior - CSS: Cascading Style Sheets 编辑
The overscroll-behavior
CSS property sets what a browser does when reaching the boundary of a scrolling area. It's a shorthand for overscroll-behavior-x
and overscroll-behavior-y
.
/* Keyword values */
overscroll-behavior: auto; /* default */
overscroll-behavior: contain;
overscroll-behavior: none;
/* Two values */
overscroll-behavior: auto contain;
/* Global values */
overscroll-behavior: inherit;
overscroll-behavior: initial;
overscroll-behavior: unset;
By default, mobile browsers tend to provide a "bounce" effect or even a page refresh when the top or bottom of a page (or other scroll area) is reached. You may also have noticed that when you have a dialog box with scrolling content on top of a page of scrolling content, once the dialog box's scroll boundary is reached, the underlying page will then start to scroll — this is called scroll chaining.
In some cases these behaviors are not desirable. You can use overscroll-behavior
to get rid of unwanted scroll chaining and the browser's Facebook/Twitter app-inspired "pull to refresh"-type behavior.
Syntax
The overscroll-behavior
property is specified as one or two keywords chosen from the list of values below.
Two keywords specifies the overscroll-behavior
value on the x
and y
axes respectively. If only one value is specified, both x and y are assumed to have the same value.
Values
auto
- The default scroll overflow behavior occurs as normal.
contain
- Default scroll overflow behavior is observed inside the element this value is set on (e.g. "bounce" effects or refreshes), but no scroll chaining occurs to neighbouring scrolling areas, e.g. underlying elements will not scroll.
none
- No scroll chaining occurs to neighbouring scrolling areas, and default scroll overflow behavior is prevented.
Formal definition
Initial value | auto |
---|---|
Applies to | non-replaced block-level elements and non-replaced inline-block elements |
Inherited | no |
Computed value | as specified |
Animation type | discrete |
Formal syntax
[ contain | none | auto ]{1,2}
Examples
Preventing an underlying element from scrolling
In our overscroll-behavior example (see the source code also), we present a full-page list of fake contacts, and a dialog box containing a chat window.
Both of these areas scroll; normally if you scrolled the chat window until you hit a scroll boundary, the underlying contacts window would start to scroll too, which is not desirable. This can be stopped using overscroll-behavior-y
(overscroll-behavior
would also work) on the chat window, like this:
.messages {
height: 220px;
overflow: auto;
overscroll-behavior-y: contain;
}
We also wanted to get rid of the standard overscroll effects when the contacts are scrolled to the top or bottom (e.g. Chrome on Android refreshes the page when you scroll past the top boundary). This can be prevented by setting overscroll-behavior: none
on the <body>
element:
body {
margin: 0;
overscroll-behavior: none;
}
Specifications
Specification | Status | Comment |
---|---|---|
CSS Overscroll Behavior Module Level 1 The definition of 'overscroll-behavior' in that specification. | Working Draft |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论