Rozszerzone menu

Gdy treść wykracza poza domenę nadrzędną, masz do wyboru wiele sposobów na poradzenie sobie z nią. Możesz przewijać, aby dodać więcej miejsca, przyciąć zachodzące na siebie krawędzie, wskazać obcięty tekst za pomocą wielokropka i tak dalej. Szczególnie ważne jest, aby pamiętać o przepełnieniu podczas programowania aplikacji na telefony i wyświetlania na ekranach różnych rozmiarów.

W CSS istnieją 2 różne opcje przycinania: text-overflow służy do przycinania poszczególnych wierszy tekstu, a właściwości overflow pozwalają kontrolować przepełnianie w modelu pudełka.

Przepełnienie pojedynczej linii z text-overflow

Użyj właściwości text-overflow w dowolnym elemencie zawierającym węzły tekstowe, np. akapicie (<p>). Określa, jak tekst ma się wyświetlać, gdy nie mieści się w dostępnej przestrzeni elementu. Cały widoczny tekst HTML na stronie znajduje się w węzłach tekstowych. Aby użyć funkcji text-overflow, potrzebujesz 1 niezapakowanego wiersza tekstu, dlatego musisz też ustawić overflow na hidden i mieć wartość white-space, która uniemożliwia zawijanie tekstu.

p {
   
text-overflow: ellipsis;
   
overflow: hidden;
   
white-space: nowrap;
}

Korzystanie z właściwości przepełnienia

Właściwości przepełnienia są ustawiane na elemencie, aby kontrolować, co się dzieje, gdy jego elementy podrzędne potrzebują więcej miejsca niż jest dostępne. Może to być celowe działanie, jak w przypadku interaktywnej mapy, takiej jak Mapy Google, gdzie użytkownik przesuwa duży obraz przycięty do określonego rozmiaru. Może to być też niezamierzone, na przykład w aplikacji do czatu, gdy użytkownik wpisze długi tekst, który nie mieści się w bańce tekstowej.

Możesz wyobrazić sobie nadmiarowość w dwóch częściach. Element nadrzędny ma ściśle ograniczoną przestrzeń, która się nie zmienia. Możesz to wyobrazić sobie jako okno. Elementy podrzędne to treści, którym brakuje miejsca od elementu nadrzędnego. Możesz to sobie wyobrazić jako to, na co patrzysz przez okno. Zarządzanie przepełnieniem pomoże określić, jak okno będzie otaczać treści.

Przewijanie po osi pionowej i poziomej

Właściwość overflow-y kontroluje fizyczne przepełnienie wzdłuż osi pionowej widocznego obszaru urządzenia, a więc przewijanie w górę i w dół.

Właściwość overflow-x kontroluje przepełnienie wzdłuż osi poziomej widoku urządzenia, a więc przewijanie w lewo i w prawo.

Właściwości logiczne kierunku przewijania

Obsługa przeglądarek

  • Chrome: funkcja nieobsługiwana.
  • Edge: funkcja nie jest obsługiwana.
  • Firefox: 69.
  • Safari: nieobsługiwane.

Źródło

Właściwości overflow-inline i overflow-block ustawiają przepełnienie na podstawie kierunku i trybu pisania dokumentu.

overflow – skrót

Krótki kod overflow ustawia oba style overflow-x i overflow-y w jednym wierszu:

overflow: hidden scroll;

Jeśli określisz 2 słowa kluczowe, pierwsze będzie stosowane do overflow-x, a drugie – overflow-y. W przeciwnym razie zarówno overflow-x, jak i overflow-y mają tę samą wartość.

Wartości

Przyjrzyjmy się bliżej wartościom i kluczowym słowom dostępnym w usługach overflow.

overflow: visible (domyślnie)
Jeśli nie ustawisz tej właściwości, domyślną wartością dla internetu będzie overflow: visible. Dzięki temu masz pewność, że treści nigdy nie są nieumyślnie ukrywane i są zgodne z podstawowymi zasadami, czyli „nigdy nie ukrywaj treści”. czy „bezpieczny układ precyzyjnych układów”.
overflow: hidden
Treści overflow: hidden są przycinane w wybranym kierunku i nie są wyświetlane za pomocą pasków przewijania, które by to umożliwiały.
overflow: scroll
overflow: scroll umożliwia przewijanie treści za pomocą pasków przewijania. Nawet jeśli zawartość obecnie nie mieści się w kontenerze, na ekranie pojawią się paski przewijania. To świetny sposób na ograniczenie przesuwania układu w przyszłości, jeśli w przyszłości kontener może być przewijany na podstawie np. zmiany rozmiaru, oraz na wizualne przygotowanie użytkownika do obsługi obszarów przewijania.
overflow: clip
Tak jak w przypadku elementu overflow: hidden treści zawierające overflow: clip są przycinane do pola dopełnienia elementu. Różnica między cliphidden polega na tym, że słowo kluczowe clip zabrania także przewijania, w tym automatycznego.
overflow: auto
Na koniec najczęściej używana jest wartość overflow: auto. Szanuje on preferencje użytkownika i w razie potrzeby wyświetla suwaki, ale domyślnie je ukrywa, a odpowiedzialnie za przewijanie przejmuje użytkownik i przeglądarka.

Przewijanie i przelewanie

Wiele z tych zachowań overflow powoduje wyświetlenie paska przewijania, ale istnieje kilka konkretnych zachowań i właściwości przewijania, które mogą pomóc w sterowaniu przewijaniem w kontenerze przepełnienia.

Przewijanie i ułatwienia dostępu

Upewnij się, że obszar, który można przewijać, może być zaznaczony, aby użytkownik mógł użyć klawisza Tab, aby przejść do pola, a potem używać klawiszy strzałek do przewijania.

Aby umożliwić akceptowanie pola przewijania, dodaj tabindex="0", nazwę z atrybutem aria-labelledby i odpowiedni atrybut role. Na przykład:

<div tabindex="0" role="region" aria-labelledby="id-of-descriptive-text">
    content
</div>

Za pomocą CSS możesz wskazać, że pole ma fokus, używając właściwości outline, aby dać wizualną wskazówkę, że będzie można teraz przewijać to pole.

W filmie Using CSS to Enforce Accessibility Adrian Roselli pokazuje, jak CSS może zapobiegać regresjom ułatwień dostępu. Dotyczy to na przykład włączania przewijania i dodawania wskaźnika ostrości tylko wtedy, gdy używane są prawidłowe atrybuty. Te reguły powodują, że pole można przewijać tylko wtedy, gdy zawiera ono atrybut tabindex, aria-labelledby i role.

[role][aria-labelledby][tabindex] {
 
overflow: auto;
}

[role][aria-labelledby][tabindex]:focus {
 
outline: .1em solid blue;
}

Pozycjonowanie paska przewijania w modelu ramkowym

Paski przewijania zajmują miejsce w ramce dopełnienia i mogą konkurować o miejsce w przypadku elementów typu inline, a nie overlaid. Moduł modelu pudełkowego zawiera więcej informacji o tym potencjalnym źródle zmian układu.

root-scroller vs implicit-scroller

Możesz zauważyć, że niektóre przewijarki działają w trybie „przeciągnij, by odświeżyć”, a także mają inne szczególne zachowania, zwłaszcza w przypadku aplikacji mobilnych i hybrydowych. Ten proces przewijania odbywa się w głównym elemencie przewijania. Na stronie jest tylko 1 główny element przewijający. Domyślnie obiekt documentElement jest głównym elementem przewijającym strony. Jednak gdy zmienisz element, który jest elementem głównym, można zastosować szczególne zachowania do elementów przewijających innych niż documentElement. W takim przypadku nazywamy ten nowy przewijak na poziomie głównym.

Aby utworzyć główny element przewijania, możesz użyć tzw. promocji przewijania. W tym celu umieść kontener jako nieruchomy, aby obejmował cały widoczny obszar, a kontener znajdował się na górze za pomocą suwaka. Tutaj możesz porównać scroller główny i zagnieżdżony scroller domyślny.

Film przedstawia główną rolę przewijającą, która cechuje się odbijaniem reklam i nowymi funkcjami stylu.
w porównaniu z niejawnym przewijaniem, które nie jest ulepszone.

scroll-behavior

Obsługa przeglądarek

  • Chrome: 61.
  • Krawędź: 79.
  • Firefox: 36.
  • Safari: 15.4.

Źródło

scroll-behavior umożliwia włączanie sterowania przewijaniem elementów przez przeglądarkę. Dzięki temu możesz określić sposób obsługi nawigacji na stronie, np. .scrollTo() lub linków.

Jest to szczególnie przydatne, gdy jest używana z ustawieniem prefers-reduced-motion, aby określić zachowanie przewijania na podstawie preferencji użytkownika.

@media (prefers-reduced-motion: no-preference) {
 
.scroll-view {
   
scroll-behavior: auto;
 
}
}

overscroll-behavior

Obsługa przeglądarek

  • Chrome: 63.
  • Edge: 18.
  • Firefox: 59.
  • Safari: 16.

Źródło

Jeśli dojdziesz do końca nakładki modalnej, a następnie przejdziesz dalej, a strona za nakładką zostanie przeniesiona, mamy do czynienia z przewijaniem łańcucha (przewijaniem), czyli przesuwaniem się w górę do nadrzędnego kontenera przewijania. Właściwość overscroll-behavior umożliwia zapobieganie wyciekowi przewijania z przepełnieniem do kontenera nadrzędnego (tzw. łańcuchowanie przewijania).

Sprawdź swoją wiedzę

Sprawdź swoją wiedzę na temat przepełnienia

Przepełnienia tekstu i przepełnienia elementu są takie same?

fałsz
prawda

Właściwość overflow akceptuje 2 słowa kluczowe. Do której osi należy pierwsze słowo kluczowe?

w poziomie
kategoria

Jaką przestrzeń w modelu pudełka zajmują paski przewijania podczas wyświetlania i wstawiania?

ramka marginesu
ramka
pole treści
pole wypełniające

Której właściwości użyjesz, aby zatrzymać dodatkowy ruch spowodowany przewijaniem w zagnieżdżonym nawigatorze?

scroll-hint
overscroll-behavior
scroll-behavior
overscroll-effect
scroll-padding

Zasoby

Przepełnienie i utrata danych w CSS z magazynu Smashing