max()

Wybiera największą z podanych wartości. Działa jak dolny limit, np. odstęp 5% szerokości, ale nigdy mniej niż 16px.

Na tej stronie

Przykład

#
CSS
.search {
  width: max(50%, 240px);
}
Podgląd

Na komputerze pole zajmuje połowę szerokości. Na telefonie połowa to za mało, więc wygrywa 240 px, a przycisk przechodzi do następnego wiersza.

Definicja i zastosowanie

#

Funkcja max() zwraca największą z wartości podanych po przecinku. W praktyce ustala dolną granicę: padding: max(16px, 5%) daje 5% szerokości rodzica, ale nigdy mniej niż 16 pikseli, więc na wąskim ekranie treść nie przyklei się do krawędzi.

Tak jak przy min(), nazwa bywa myląca: max() nie ustawia maksimum, tylko minimum. Zapis width: max(50%, 300px) odpowiada parze width: 50%; min-width: 300px;. Argumentów może być więcej niż dwa, a w każdym wolno pisać działania i używać zmiennych.

Dobry przykład to telefony z wycięciem w ekranie. Przy viewport-fit=cover w znaczniku viewport zapis padding-left: max(1rem, env(safe-area-inset-left)) zachowuje zwykły odstęp, ale powiększa go tam, gdzie krawędź zasłania wycięcie aparatu. Przy tekście max() pilnuje czytelności: font-size: max(1rem, 2vw) nie pozwoli literom zmaleć poniżej rozmiaru bazowego.

Składnia

#
Składnia
max(<wartość>, <wartość> [, <wartość>]*)

Typowe zastosowania

#
  • max(60%, 120px)

    60%, w wąskiej ramce 120px

    Dolny limit szerokości. W szerokiej ramce kafelek ma 60% jej szerokości. Przeciągnij prawy dolny róg w lewo: gdy 60% zrobi się mniejsze niż 120 px, kafelek przestaje maleć.
  • max(14px, 7cqi)

    7cqi, w wąskiej ramce 14px

    Tekst skaluje się z szerokością kontenera, ale nie spada poniżej 14 px. Zwężaj ramkę i obserwuj, jak napis maleje, a potem się zatrzymuje.
  • max(8px, 5cqi)

    5cqi, w wąskiej ramce 8px

    Odstęp wewnętrzny rośnie razem z kontenerem, ale nigdy nie spada poniżej 8 px, więc tekst nie dotknie krawędzi kafelka.

Typowe zastosowania w praktyce

#

max(60%, 120px)

Dolny limit szerokości. W szerokiej ramce kafelek ma 60% jej szerokości. Przeciągnij prawy dolny róg w lewo: gdy 60% zrobi się mniejsze niż 120 px, kafelek przestaje maleć.
.demo { width: max(60%, 120px); }

max(14px, 7cqi)

Tekst skaluje się z szerokością kontenera, ale nie spada poniżej 14 px. Zwężaj ramkę i obserwuj, jak napis maleje, a potem się zatrzymuje.
.demo { font-size: max(14px, 7cqi); }

max(8px, 5cqi)

Odstęp wewnętrzny rośnie razem z kontenerem, ale nigdy nie spada poniżej 8 px, więc tekst nie dotknie krawędzi kafelka.
.demo { padding: max(8px, 5cqi); }

Obsługa przeglądarek

#

Szeroko dostępne · od 2020 roku

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

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Wynik max() jest zawsze co najmniej tak duży jak każdy z argumentów, więc funkcja działa jak dolny limit.
  • Gdy potrzebujesz naraz dolnego i górnego limitu, zamiast zagnieżdżać max() i min() użyj clamp().
  • Przy rozmiarach tekstu w vw dodaj dolny limit w rem, np. max(1rem, 2.5vw), żeby na telefonie litery nie robiły się za małe.

Powiązane hasła

#

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