Właściwość CSSModel pudełkowy

overflow-x

Decyduje, co zrobić z treścią wystającą w poziomie. Bliźniacza overflow-y robi to samo w pionie.

Wartość domyślna
visible
Dziedziczona
Nie
Animowalna
nie
Dotyczy
kontenery blokowe, kontenery flex i grid
JavaScript
element.style.overflowX = "auto"
Na tej stronie

Przykład

#
CSS
.chips {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding-block-end: 8px;
}

.chips button {
  flex: none;
}
Podgląd

Na wąskim ekranie przyciski nie łamią się do nowej linii, tylko przewijają w poziomie. flex: none nie pozwala im się ściskać, a padding-block-end odsuwa pasek przewijania od przycisków.

Definicja i zastosowanie

#

Właściwość overflow-x określa, co się dzieje z treścią, która nie mieści się w elemencie na szerokość: wystaje, zostaje ucięta albo da się ją przewinąć. Jej bliźniaczka overflow-y działa tak samo, tylko w pionie. Obie przyjmują te same wartości co skrót overflow, który ustawia je jednocześnie.

Osobne osie przydają się, gdy przewijanie ma działać tylko w jednym kierunku. Poziomy pasek filtrów na telefonie, szeroka tabela czy długie linie kodu dostają overflow-x: auto, a panel boczny albo okno czatu, które przewija się w dół, overflow-y: auto.

Osie nie są jednak w pełni niezależne i ta reguła zaskakuje prawie każdego. Jeśli jedna z nich przewija lub ucina z przewijaniem (hidden, scroll, auto), to visible na drugiej zamienia się w auto, a clip w hidden. Nie da się więc przewijać w poziomie i jednocześnie pozwolić, żeby coś wystawało w pionie. Wyjątkiem jest clip, który nie wymusza tej zamiany.

Wartości inne niż visible i clip tworzą kontener przewijania. Dlatego overflow-x: hidden na przodku potrafi popsuć position: sticky. Jeśli chcesz tylko uciąć nadmiar, bez przewijania, wybierz clip.

Składnia

#
Składnia
overflow-x: visible | hidden | clip | scroll | auto;
overflow-y: visible | hidden | clip | scroll | auto;

Wartości

#
  • visible

    Pasek kart wystaje poza ramkę po prawej, a plakietka nad pierwszą kartą wystaje u góry. To wartość domyślna.
  • hidden

    Nadmiar zostaje ucięty przy krawędzi ramki i nie ma paska przewijania. Zauważ, że plakietka też jest ucięta: oś pionowa zmieniła się z visible na auto.
  • auto

    Poziomy pasek przewijania pojawia się tylko wtedy, gdy treść się nie mieści. Najczęstszy wybór, ale plakietka znów zostaje ucięta.
  • scroll

    Miejsce na pasek przewijania jest zawsze, nawet gdy treść się mieści. W systemach, które chowają paski (np. macOS), wygląda to jak auto.
  • clip

    Ucina nadmiar w poziomie bez tworzenia kontenera przewijania. Oś pionowa może zostać visible, więc plakietka wystaje w całości.
  • overflow-y: auto

    oś pionowa

    Ta sama logika w pionie. Lista ma stałą wysokość, a nadmiar przewija się w dół.

Wartości w praktyce

#

visible

Pasek kart wystaje poza ramkę po prawej, a plakietka nad pierwszą kartą wystaje u góry. To wartość domyślna.
.demo { overflow-x: visible; }

hidden

Nadmiar zostaje ucięty przy krawędzi ramki i nie ma paska przewijania. Zauważ, że plakietka też jest ucięta: oś pionowa zmieniła się z visible na auto.
.demo { overflow-x: hidden; }

auto

Poziomy pasek przewijania pojawia się tylko wtedy, gdy treść się nie mieści. Najczęstszy wybór, ale plakietka znów zostaje ucięta.
.demo { overflow-x: auto; }

scroll

Miejsce na pasek przewijania jest zawsze, nawet gdy treść się mieści. W systemach, które chowają paski (np. macOS), wygląda to jak auto.
.demo { overflow-x: scroll; }

clip

Ucina nadmiar w poziomie bez tworzenia kontenera przewijania. Oś pionowa może zostać visible, więc plakietka wystaje w całości.
.demo { overflow-x: clip; }

overflow-y: auto

Ta sama logika w pionie. Lista ma stałą wysokość, a nadmiar przewija się w dół.
.demo { overflow-y: auto; }

Więcej przykładów

#
Długie linie kodu
CSS
pre {
  overflow-x: auto;
  padding: 12px 16px;
  border-radius: 10px;
  background: #18181b;
}
Podgląd

Blok kodu nie łamie linii, więc bez overflow-x: auto długi wiersz rozepchnąłby układ strony. Z tą deklaracją przewija się tylko sam blok.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Pasek kart lub filtrów na telefonie to display: flex z overflow-x: auto na rodzicu i flex: none na dzieciach.
  • Poziomy pasek przewijania całej strony lepiej naprawić u źródła, szukając zbyt szerokiego elementu. Jeśli musisz go ukryć, użyj overflow-x: clip zamiast hidden, żeby nie popsuć position: sticky.
  • Nie próbuj łączyć przewijania w jednej osi z visible w drugiej. Wystające menu lub dymek przenieś poza przewijany element.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.