overscroll-behavior
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.
Die overscroll-behavior
CSS-Eigenschaft legt fest, was ein Browser tut, wenn er den Rand eines Scrollbereichs erreicht.
Probieren Sie es aus
overscroll-behavior: auto;
overscroll-behavior: contain;
overscroll-behavior: none;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="box">
This is a scrollable container. Michaelmas term lately over, and the Lord
Chancellor sitting in Lincoln's Inn Hall. Implacable November weather. As
much mud in the streets as if the waters had but newly retired from the
face of the earth.
<br /><br />
Lorem Ipsum has been the industry's standard dummy text ever since the
1500s, when an unknown printer took a galley of type and scrambled it to
make a type specimen book. It has survived not only five centuries, but
also the leap into electronic typesetting, remaining essentially
unchanged.
</div>
<div id="example-element">
This is the inner container. Focus on this container, scroll to the bottom
and when you reach the bottom keep scrolling.
<p>
If you have
<code class="language-css">overscroll-behavior: auto;</code> selected
the outer container will start to scroll.
</p>
If you have
<code class="language-css">overscroll-behavior: contain;</code> selected,
the outer container will not scroll unless you move your cursor out of the
inner container and try to perform scroll on the outer container.
</div>
</div>
</section>
.example-container {
width: 35em;
height: 18em;
border: medium dotted;
padding: 0.75em;
text-align: left;
overflow: auto;
display: flex;
}
.box {
width: 50%;
}
#example-element {
width: 50%;
height: 12em;
border: medium dotted #1b76c4;
padding: 0.3em;
margin: 0 0.3em;
text-align: left;
overflow: auto;
overscroll-behavior: contain;
}
Bestandteilige Eigenschaften
Diese Eigenschaft ist eine Kurzform für die folgenden CSS-Eigenschaften:
Syntax
/* 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: revert;
overscroll-behavior: revert-layer;
overscroll-behavior: unset;
Die overscroll-behavior
-Eigenschaft wird als eines oder zwei Schlüsselwörter aus der unten stehenden Werteliste angegeben.
Zwei Schlüsselwörter spezifizieren den overscroll-behavior
-Wert auf den x
- und y
-Achsen respektive. Wenn nur ein Wert angegeben wird, wird für beide Achsen derselbe Wert angenommen.
Werte
auto
-
Das Standardverhalten bei Überlauf von Scrolls tritt wie gewohnt auf.
contain
-
Das Standardverhalten bei Überlauf von Scrolls (z.B. „Bounce“-Effekte) wird innerhalb des Elements beobachtet, in dem dieser Wert gesetzt ist. Es tritt jedoch kein Scroll-Chaining bei angrenzenden Scrollbereichen auf; die darunter liegenden Elemente scrollen nicht. Der
contain
-Wert deaktiviert die native Browser-Navigation, einschließlich der vertikalen Pull-to-Refresh-Geste und der horizontalen Wischnavigation. none
-
Es tritt kein Scroll-Chaining bei angrenzenden Scrollbereichen auf, und das Standardverhalten bei Überlauf von Scrolls wird verhindert.
Beschreibung
Standardmäßig neigen mobile Browser dazu, einen "Bounce"-Effekt oder sogar eine Seitenaktualisierung zu liefern, wenn der obere oder untere Rand einer Seite (oder eines anderen Scrollbereichs) erreicht wird. Sie haben vielleicht auch bemerkt, dass wenn Sie ein Dialogfeld mit scrollbarem Inhalt am oberen Rand einer Seite haben, die auch scrollbare Inhalte hat, sobald der Scrollrand des Dialogfeldes erreicht ist, die darunter liegende Seite zu scrollen beginnt – dies wird als Scroll-Chaining bezeichnet.
In einigen Fällen sind diese Verhaltensweisen nicht erwünscht. Sie können overscroll-behavior
verwenden, um unerwünschtes Scroll-Chaining und das "Pull-to-Refresh"-Verhalten des Browsers, wie es bei der Facebook-/Twitter-App inspiriert ist, zu beseitigen.
Beachten Sie, dass diese Eigenschaft nur für Scroll-Container gilt. Insbesondere da ein <iframe>
kein Scroll-Container ist, hat das Setzen dieser Eigenschaft auf einem iframe keinen Effekt. Um das Scroll-Chaining von einem iframe zu steuern, setzen Sie overscroll-behavior
sowohl auf die <html>
- als auch die <body>
-Elemente des Dokuments des iframes.
Formale Definition
Anfangswert | auto |
---|---|
Anwendbar auf | nicht ersetzte Blocklevel Elemente und nicht ersetzte Inlineblock Elemente |
Vererbt | Nein |
Berechneter Wert | wie die jeweiligen Kurzschreibweisen:
|
Animationstyp | diskret |
Formale Syntax
Beispiele
Verhindern, dass ein zugrundeliegendes Element scrollt
In unserem overscroll-behavior Beispiel (siehe auch den Quellcode), präsentieren wir eine ganzseitige Liste von gefälschten Kontakten und ein Dialogfeld mit einem Chat-Fenster.
Beide Bereiche sind scrollbar; normalerweise, wenn Sie das Chatfenster scrollen, bis Sie einen Scrollrand erreichen, würde das zugrundeliegende Kontaktefenster auch zu scrollen beginnen, was nicht wünschenswert ist. Dies kann durch die Verwendung von overscroll-behavior-y
(overscroll-behavior
würde auch funktionieren) auf dem Chatfenster gestoppt werden, wie folgt:
.messages {
height: 220px;
overflow: auto;
overscroll-behavior-y: contain;
}
Wir wollten auch die standardmäßigen Effekte des Überscrollens beseitigen, wenn die Kontakte an den oberen oder unteren Rand gescrollt werden (z.B. Chrome auf Android aktualisiert die Seite, wenn Sie den oberen Rand überschreiten). Dies kann verhindert werden, indem overscroll-behavior: none
auf das <html>
-Element gesetzt wird:
html {
margin: 0;
overscroll-behavior: none;
}
Spezifikationen
Specification |
---|
CSS Overscroll Behavior Module Level 1 # overscroll-behavior-properties |
Browser-Kompatibilität
Siehe auch
- CSS overscroll behavior Modul
- CSS scroll anchoring Modul
- Übernehmen Sie die Kontrolle über Ihr Scrollen: Anpassung von Pull-to-Refresh und Überlauf-Effekten auf developer.chrome.com (2017)