CSS Overflow

Sobald ein Element eine feste Breite oder Höhe (width, height) hat und der Inhalt mehr Platz benötigt als verfügbar ist, entsteht Overflow. Mit overflow legst du fest, ob der überstehende Inhalt sichtbar bleibt, abgeschnitten wird oder scrollbar ist.

overflow ist eine Kurzschreibweise und setzt gleichzeitig overflow-x und overflow-y.


Overflow Werte

Overflow entsteht häufig durch eine feste Breite oder Höhe, kann aber auch durch maximale Grössen wie max-width oder max-height entstehen.

  • visibleStandard – Inhalt läuft aus der Box heraus
  • hiddenInhalt wird abgeschnitten
  • scrollScrollbars werden immer angezeigt
  • autoScrollbars erscheinen nur bei Bedarf
  • clipInhalt wird abgeschnitten, ohne Scroll-Möglichkeit
  • overflow-xhorizontalen Overflow steuern
  • overflow-yvertikalen Overflow steuern

overflow: visible

Der Standardwert. Inhalt, der über die Begrenzung eines Elements hinausragt, bleibt sichtbar und kann benachbarte Elemente überlagern.

div {
  width: 250px;
  height: 100px;
  overflow: visible;
}
Dieser Text ist länger als die Box hoch ist. Er läuft über den Rand hinaus und überlagert den nachfolgenden Inhalt. Das ist das Standardverhalten.

Wichtig: Überstehender Inhalt kann andere Elemente optisch überlagern, ohne deren Position zu verändern.


overflow: hidden

Alles, was über den Rand eines Elements hinausragt, wird abgeschnitten und ist nicht mehr sichtbar. Es werden keine Scrollbars angezeigt.

div {
  width: 250px;
  height: 100px;
  overflow: hidden;
}
Dieser Text ist länger als die Box hoch ist. Er wird abgeschnitten. Alles, was nicht in die Box passt, bleibt unsichtbar.

Typische Einsatzbereiche:

  • Bilder zuschneiden, ohne sie zu verkleinern
  • Animationen, die ausserhalb einer Box starten oder enden

overflow: scroll

Es werden immer Scrollbars angezeigt – auch wenn der Inhalt vollständig in das Element passt.

div {
  width: 250px;
  height: 100px;
  overflow: scroll;
}
Dieser Text ist länger als die Box hoch ist. Scrollbars werden immer angezeigt – unabhängig davon, ob sie tatsächlich benötigt werden.

Hinweis: Auf macOS werden Scrollbars je nach Systemeinstellung oft nur während des Scrollens angezeigt. Auf Windows sind sie meist dauerhaft sichtbar.


overflow: auto

Scrollbars werden nur bei Bedarf angezeigt. Passt der Inhalt vollständig in das Element, bleiben sie ausgeblendet.

div {
  width: 250px;
  height: 100px;
  overflow: auto;
}
Dieser Text ist länger als die Box hoch ist. Da der Inhalt nicht vollständig in das Element passt, erscheint automatisch eine Scrollbar. Wird weiterer Inhalt hinzugefügt, wächst das Element nicht mit, sondern bleibt auf seiner definierten Höhe. So kann der gesamte Inhalt bequem innerhalb des Elements gescrollt werden.

Empfehlung: overflow: auto ist in den meisten Fällen die beste Wahl, da Scrollbars nur angezeigt werden, wenn sie tatsächlich benötigt werden.


overflow: clip

Wie hidden, jedoch ohne Scroll-Möglichkeit. Der überstehende Inhalt wird abgeschnitten und lässt sich auch mit JavaScript nicht scrollen.

div {
  width: 250px;
  height: 100px;
  overflow: clip;
}
Pedalo auf einem See
Dieser Text wird wie bei hidden abgeschnitten. Im Gegensatz zu hidden lässt sich der Inhalt jedoch auch per JavaScript nicht scrollen.

Unterschied zu hidden:

  • hidden – Inhalt wird abgeschnitten, kann aber über JavaScript gescrollt werden.
  • clip – Inhalt wird abgeschnitten und kann auch über JavaScript nicht gescrollt werden.

Einsatz: Sinnvoll, wenn Inhalte konsequent abgeschnitten werden sollen und kein Scrollen möglich sein darf.


overflow-x und overflow-y

Mit overflow-x und overflow-y lassen sich horizontaler und vertikaler Overflow unabhängig voneinander steuern.

div {
  overflow-x: auto;   /* horizontale Scrollbar bei Bedarf */
  overflow-y: hidden; /* vertikalen Inhalt abschneiden */
}
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

Wichtig: Browser verhalten sich nicht immer gleich. In diesem Fall ist das Verhalten jedoch standardisiert: Wird visible mit einem anderen Overflow-Wert kombiniert, behandelt der Browser visible automatisch als auto.

Typische Einsatzbereiche sind breite Tabellen, Codeblöcke oder Bildergalerien, die nur horizontal gescrollt werden sollen.


Praktische Beispiele

1. Scrollbarer Container

Ideal für Bereiche mit viel Inhalt, die innerhalb einer festen Höhe scrollbar bleiben sollen.

Scrollbarer Content

Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy.

.scrollable {
    height: 300px;
    overflow-y: auto;
}

Achtung: Auf kleinen Screens hat es vielleicht zu viele Scrollbars.


2. Horizontales Scrollen

Typisch für breite Tabellen, Codeblöcke oder Bildergalerien.

Item 1
Item 2
Item 3
Item 4
.horizontal-scroll {
    overflow-x: auto;
    white-space: nowrap;
}

.item {
    display: inline-block;
}

3. Sticky Header mit Scroll

Der Header bleibt innerhalb des scrollbaren Containers sichtbar.

Scroll nach unten – Header bleibt kleben!

Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie

.container {
    height: 400px;
    overflow-y: auto;
}

.sticky-header {
    position: sticky;
    top: 0;
    background: deeppink;
    z-index: 10;
}

4. Hover Expand

Inhalte werden erst bei Bedarf eingeblendet und sparen Platz.

Hover über mich!

Inhalt wird beim Hover sichtbar...

"The quick brown fox jumps over the lazy dog" ist ein Pangramm – ein Satz, der alle 26 Buchstaben des Alphabets enthält. Wurde schon im 19. Jahrhundert benutzt, um Schreibmaschinen und später Schriften zu testen.

pedalo
.expandable {
    height: 100px;
    overflow: hidden;
    transition: height 0.3s;
}

.expandable:hover {
    height: auto;
    max-height: 400px;
    overflow-y: auto;
}

Wichtig: Der Inhalt springt nach unten. Nicht in jedem Design verwenden.


Custom Scrollbars - Standard

Scrollbars können an das Design angepasst werden. Die Unterstützung unterscheidet sich jedoch je nach Browser.

Die Scrollbar wird auf dem äusseren Container definiert. Das innere Element enthält lediglich den Inhalt.

Custom Scrollbar

Scroll nach unten – die Scrollbar ist gestylt!

"The quick brown fox jumps over the lazy dog" ist ein Pangramm – ein Satz, der alle 26 Buchstaben des Alphabets enthält. Wurde schon im 19. Jahrhundert benutzt, um Schreibmaschinen und später Schriften zu testen.

.demo-custom-scrollbar-all {
    height: 200px;
    overflow-y: auto;
    border: 1px solid #ccc;
    margin: 0 0 20px;

    scrollbar-width: thin;
    scrollbar-color: deeppink antiquewhite;
}

Werte für scrollbar-width

  • auto – Standardbreite
  • thin – schmale Scrollbar
  • none – Scrollbar ausblenden (Scrollen bleibt möglich)

scrollbar-color

  • 1. Farbe – Thumb (beweglicher Schieber)
  • 2. Farbe – Track (Hintergrund)
  • Alle CSS-Farbwerte sind erlaubt, auch transparent.
  • Verläufe und Bilder werden nicht unterstützt.

Werte für scrollbar-gutter

Mit scrollbar-gutter kann Platz für eine Scrollbar reserviert werden. Dadurch bleibt das Layout stabil, wenn Scrollbars erscheinen oder verschwinden.

.container {
    overflow: auto;
    scrollbar-gutter: stable;
}
  • auto – Standardverhalten des Browsers.
  • stable – Reserviert Platz für die Scrollbar, um Layoutverschiebungen zu vermeiden.
  • stable both-edges – Reserviert den Platz auf beiden Seiten für eine symmetrische Darstellung.
  • always – Reserviert den Platz dauerhaft (experimentell, noch nicht breit unterstützt).

Hinweis: Je nach Browser und Betriebssystem ist der Effekt nicht immer sichtbar. Beispielsweise verwenden macOS und einige Browser Overlay-Scrollbars, die keinen zusätzlichen Platz benötigen.


Custom Scrollbars – WebKit

Chromium-basierte Browser und Safari unterstützen mit ::-webkit-scrollbar zusätzliche Gestaltungsmöglichkeiten wie individuelle Breiten, Verläufe, Hover-Effekte oder abgerundete Ecken.

Custom Scrollbar

Scroll nach unten – die Scrollbar ist gestylt!

"The quick brown fox jumps over the lazy dog" ist ein Pangramm – ein Satz, der alle 26 Buchstaben des Alphabets enthält. Wurde schon im 19. Jahrhundert benutzt, um Schreibmaschinen und später Schriften zu testen.

.element::-webkit-scrollbar {
    width: 10px;
}

.element::-webkit-scrollbar-track {
    background: antiquewhite;
    border-radius: 5px;
}

.element::-webkit-scrollbar-thumb {
    background:linear-gradient(to bottom, deeppink, indigo);
    border-radius: 5px;
}

.element::-webkit-scrollbar-thumb:hover {
    background: deeppink;
}

Typische Fehler

  • overflow: hidden auf dem body verhindert das Scrollen der gesamten Seite (z. B. bei Modals jedoch gewollt).
  • overflow: scroll statt auto – unnötige Scrollbars werden angezeigt.
  • Vergessen, dass overflow nur wirkt, wenn das Element eine definierte Grösse hat.

Kurz gesagt

  • overflow: visible ist der Standardwert und zeigt überstehenden Inhalt an.
  • overflow: hidden schneidet überstehenden Inhalt ab.
  • overflow: scroll zeigt Scrollbars immer an.
  • overflow: auto ist meist die beste Wahl.
  • overflow: clip schneidet Inhalt ab und verhindert auch das Scrollen per JavaScript.
  • overflow-x und overflow-y können unabhängig voneinander verwendet werden.
  • Scrollbars lassen sich mit scrollbar-width, scrollbar-color, scrollbar-gutter oder ::-webkit-scrollbar gestalten.

Nurse Für Boxgrössen und Layoutverhalten siehe Box Model und Display.