The CSS Podcast – 034: Overflow
Wenn Inhalte über das übergeordnete Element hinausgehen, haben Sie viele Möglichkeiten, wie Sie damit umgehen können. Sie können scrollen, um zusätzlichen Platz zu schaffen, die überlaufenden Kanten zu kürzen, den Rand mit Auslassungspunkten zu kennzeichnen und vieles mehr. Überlauf ist besonders wichtig bei der Entwicklung für Telefonanwendungen und mehrere Bildschirmgrößen.
In CSS gibt es zwei verschiedene Zuschneideoptionen: text-overflow
eignet sich für einzelne Textzeilen und die overflow
-Eigenschaften helfen, den Überlauf im Box-Modell zu steuern.
Überlauf mit einer Zeile und text-overflow
Verwenden Sie die Property text-overflow
für alle Elemente, die Textknoten enthalten, z. B. einen Absatz (<p>
). Hier wird festgelegt, wie der Text angezeigt wird, wenn er nicht in den verfügbaren Bereich des Elements passt. Der gesamte sichtbare HTML-Text auf einer Seite befindet sich in Textknoten. Für die Verwendung von text-overflow
ist eine einzelne Zeile mit nicht umgebrochenem Text erforderlich. Daher müssen Sie overflow
auf hidden
festlegen und einen white-space
-Wert verwenden, der das Umbrechen verhindert.
p {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
Überlaufeigenschaften verwenden
Überlaufeigenschaften werden für ein Element festgelegt, um zu steuern, was passiert, wenn seine untergeordneten Elemente mehr Platz benötigen, als ihm zur Verfügung steht. Das kann beabsichtigt sein, z. B. bei einer interaktiven Karte wie Google Maps, bei der ein Nutzer ein großes Bild schwenken kann, das auf eine bestimmte Größe zugeschnitten ist. Es kann auch unbeabsichtigt sein, z. B. in einer Chat-App, in der der Nutzer eine lange Nachricht eingibt, die nicht in die Textblase passt.
Sie können sich den Überlauf in zwei Teilen vorstellen. Das übergeordnete Element hat einen fest beschränkten Bereich, der sich nicht ändert. Sie können sich dies als ein Fenster vorstellen. Die untergeordneten Elemente sind Inhalte, die mehr Platz vom übergeordneten Element benötigen. Sie können sich das als das vorstellen, was Sie durch das Fenster sehen. Die Verwaltung des Überlaufs trägt dazu bei, wie die Fenster diese Inhalte umrahmen.
Scrollen auf der vertikalen und horizontalen Achse
Mit der Eigenschaft overflow-y
wird der physische Überlauf entlang der vertikalen Achse des Darstellungsbereichs des Geräts gesteuert, sodass das Gerät nach oben und unten gescrollt wird.
Mit der Eigenschaft overflow-x
wird der Überlauf entlang der horizontalen Achse des Geräte-Viewports gesteuert, also das Scrollen nach links und rechts.
Logische Eigenschaften für die Scrollrichtung
Unterstützte Browser
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
Mit den Eigenschaften overflow-inline
und overflow-block
wird der Überlauf basierend auf der Dokumentrichtung und dem Schreibmodus festgelegt.
Die Kurzschreibweise für overflow
Mit dem Kurzzeichen overflow
werden sowohl der overflow-x
- als auch der overflow-y
-Stil in einer Zeile festgelegt:
overflow: hidden scroll;
Wenn zwei Keywords angegeben werden, gilt das erste für overflow-x
und das zweite für overflow-y
. Andernfalls wird für overflow-x
und overflow-y
derselbe Wert verwendet.
Werte
Sehen wir uns an, welche Werte und Keywords für die overflow
-Properties verfügbar sind.
overflow: visible
(Standard)- Ohne das Attribut wird
overflow: visible
der Standardwert für das Web verwendet. So wird sichergestellt, dass Inhalte niemals versehentlich ausgeblendet werden, und die Grundprinzipien „Inhalte niemals ausblenden“ oder „Sichere Layouts mit präzisen Layouts“ werden eingehalten. overflow: hidden
- Bei
overflow: hidden
wird der Inhalt in der angegebenen Richtung zugeschnitten und es werden keine Scrollleisten angezeigt. overflow: scroll
Mit overflow: scroll
können Nutzer mithilfe von Bildlaufleisten durch Inhalte scrollen. Auch wenn die Inhalte derzeit nicht überlaufen, sind Bildlaufleisten vorhanden. Dies ist eine gute Möglichkeit, zukünftige Layoutänderungen zu reduzieren, wenn ein Container in Zukunft beispielsweise aufgrund einer Größenänderung scrollbar sein kann, und die Nutzer visuell auf scrollbare Bereiche vorzubereiten.overflow: clip
- Wie bei
overflow: hidden
wird der Inhalt mitoverflow: clip
am Innenrand des Elements abgeschnitten. Der Unterschied zwischenclip
undhidden
besteht darin, dass mit dem Keywordclip
auch das Scrollen verboten wird, einschließlich programmatischem Scrollen. overflow: auto
- Zu guter Letzt ist der am häufigsten verwendete Wert
overflow: auto
. Dadurch werden die Einstellungen des Nutzers berücksichtigt und bei Bedarf Bildlaufleisten angezeigt. Diese werden jedoch standardmäßig ausgeblendet und der Nutzer und der Browser haben die Verantwortung für das Scrollen.
Scrollen und Überlauf
Viele dieser overflow
-Verhaltensweisen führen zu einer Bildlaufleiste. Es gibt jedoch einige spezielle Scrollfunktionen und ‐eigenschaften, mit denen Sie das Scrollen im Überlaufcontainer steuern können.
Scrollen und Barrierefreiheit
Der scrollbare Bereich muss fokussierbar sein, damit Nutzer mit Tastatur den Tabulator auf das Feld drücken und dann mit den Pfeiltasten scrollen können.
Damit ein Bildlauffeld den Fokus akzeptieren kann, fügen Sie tabindex="0"
, einen Namen mit dem Attribut aria-labelledby
und ein entsprechendes role
-Attribut hinzu. Beispiel:
<div tabindex="0" role="region" aria-labelledby="id-of-descriptive-text">
content
</div>
Anschließend kann mithilfe des CSS-Codes angegeben werden, dass das Feld im Fokus ist. Die Eigenschaft outline
gibt einen visuellen Hinweis darauf, dass das Feld nun scrollbar ist.
In Using CSS to Enforce Accessibility zeigt Adrian Roselli, wie Sie mit CSS Rückschritte bei der Barrierefreiheit verhindern können. So können Sie beispielsweise das Scrollen nur aktivieren und den Fokusindikator hinzufügen, wenn die richtigen Attribute verwendet werden. Mit den folgenden Regeln ist das Feld nur scrollbar, wenn es die Attribute tabindex
, aria-labelledby
und role
hat.
[role][aria-labelledby][tabindex] {
overflow: auto;
}
[role][aria-labelledby][tabindex]:focus {
outline: .1em solid blue;
}
Positionierung der Bildlaufleiste im Boxmodell
Bildlaufleisten belegen Platz im Ränderbereich und können um den Platz konkurrieren, wenn inline
und nicht overlaid
verwendet wird. Im Modul zum Boxmodell erfahren Sie mehr über diese potenzielle Ursache für Layoutänderungen.
Root-Scroller und impliziter Scroller
Einige Scroller haben ein Pull-to-Refresh-Verhalten und andere spezielle Verhaltensweisen, insbesondere bei der Entwicklung für mobile und hybride Anwendungen. Dieses Scrollverhalten findet beim Stamm-Scroller statt. Auf einer Seite gibt es immer nur einen einzigen Stamm-Scroller. Standardmäßig ist das documentElement der Root-Scroller der Seite. Wenn Sie jedoch ändern, welches Element der Root-Scroller ist, können die speziellen Verhaltensweisen auf andere Scroller als das documentElement (Dokumentelement) angewendet werden. Wir nennen diesen neuen Scroller den impliziten Root-Scroller.
Wenn Sie einen Root-Scroller erstellen möchten, können Sie die sogenannte Scroller-Beförderung verwenden. Positionieren Sie dazu einen Container als fixiert, sodass er den gesamten Darstellungsbereich abdeckt und im Z-Index über einem Scroller liegt. Hier können Sie einen Root-Scroller mit einem verschachtelten impliziten Scroller vergleichen.
scroll-behavior
Unterstützte Browser
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
- <ph type="x-smartling-placeholder">
Mit scroll-behavior
können Sie das browsergesteuerte Scrollen zu Elementen aktivieren. Hier können Sie angeben, wie die In-Page-Navigation wie .scrollTo()
oder Links gehandhabt wird.
Dies ist besonders nützlich, wenn das Scrollverhalten der Nutzer in Verbindung mit prefers-reduced-motion festgelegt wird.
@media (prefers-reduced-motion: no-preference) {
.scroll-view {
scroll-behavior: auto;
}
}
overscroll-behavior
Wenn Sie schon einmal das Ende eines modalen Overlays erreicht, weitergescrollt und festgestellt haben, dass sich die Seite hinter dem Overlay bewegt hat, dann ist das die Scroll-Kette oder das Aufsteigen zum übergeordneten Scroll-Container. Mit der Eigenschaft overscroll-behavior
können Sie verhindern, dass das Überlauf-Scrollen in einen übergeordneten Container eindringt (dies wird als Scroll-Kettenreaktion bezeichnet).
Wissen testen
Testen Sie Ihr Wissen über Overflow
Sind Text- und Elementüberlauf dasselbe?
Für die Eigenschaft overflow
sind zwei Keywords zulässig. Für welche Achse befindet sich das erste Keyword?
Welchen Bereich im Box-Modell belegen Bildlaufleisten, wenn sie angezeigt und inline sind?
Welche Eigenschaft verwenden Sie, um bei verschachtelten impliziten Scrollern zusätzliche Dynamik zu vermeiden?
overscroll-effect
scroll-behavior
overscroll-behavior
scroll-hint
scroll-padding