CSS min(), max() i clamp()

Dowiedz się, jak kontrolować rozmiar elementów, utrzymywać odpowiednie odstępy i wdrażać płynną typografię, korzystając z tych dobrze obsługiwanych funkcji CSS.

Projektowanie stron responsywnych staje się coraz bardziej złożone, dlatego CSS stale się rozwija, aby dać autorom większą kontrolę. Funkcje min(), max() i clamp(), które są teraz obsługiwane we wszystkich nowoczesnych przeglądarkach, należą do najnowszych narzędzi, dzięki którym tworzenie witryn i aplikacji jest bardziej dynamiczne i responsywne. Za pomocą tych funkcji możesz kontrolować rozmiar i rozmiar elementów, utrzymywać odstępy między elementami oraz tworzyć elastyczną i płynną typografię.

Funkcje matematyczne calc(), min(), max() i clamp() umożliwiają stosowanie jako wartości składowych wyrażeń matematycznych z dodawaniem (+), odejmowaniem (-), mnożeniem (*) i dzieleniem (/)

Wartości i jednostki CSS – poziom 4

Obsługiwane przeglądarki

min()

Obsługa przeglądarek

  • 79
  • 79
  • 75
  • 11.1

Źródło

max()

Obsługa przeglądarek

  • 79
  • 79
  • 75
  • 11.1

Źródło

clamp()

Obsługa przeglądarek

  • 79
  • 79
  • 75
  • 13.1

Źródło

Wykorzystanie

Możesz używać min(), max() i clamp() po prawej stronie dowolnego wyrażenia CSS w odpowiednich miejscach. W przypadku min() i max() podajesz listę argumentów, a przeglądarka określa, która z nich jest najmniejsza lub największa. Na przykład w przypadku width: min(1rem, 50%, 10vw) przeglądarka oblicza, która z tych jednostek względnych jest najmniejsza, i używa tej wartości jako szerokości elementu.

Funkcja min() wybiera minimalną wartość z listy opcji w tej prezentacji Codepen.

Funkcja max() robi to samo z wartością maksymalną.

Funkcja max() wybiera wartość z listy opcji w tej prezentacji Codepen.

Aby użyć funkcji clamp(), wpisz 3 wartości: wartość minimalną, wartość idealną do obliczenia i wartość maksymalną.

W tej prezentacji Codepen funkcja clamp() zachowuje wartość między określoną wartością minimalną a maksymalną.

Z tych funkcji można korzystać wszędzie tam, gdzie dozwolone są atrybuty <length>, <frequency>, <angle>, <time>, <percentage>, <number> i <integer>. Możesz ich używać oddzielnie (np. w font-size: max(0.5vw, 50%, 2rem)), za pomocą funkcji calc() (np. font-size: max(calc(0.5vw - 1em), 2rem)) lub tworzonej (jak w przykładzie font-size: max(min(0.5vw, 1em), 2rem)).

Poniżej znajduje się kilka przykładów użycia tych funkcji.

Idealna szerokość

Według The Elements of Typographic Style Robert Bringhursta za tekst o długości od 45 do 75 znaków powszechnie uznaje się za zadowalającą długość wiersza strony jednokolumnowej umieszczonej w tekście z szeryfem.

Aby mieć pewność, że bloki tekstu mają długość od 45 do 75 znaków, użyj jednostki clamp() i ch (przewijanie znaków o szerokości 0):

p {
  width: clamp(45ch, 50%, 75ch);
}

Dzięki temu przeglądarka może określić szerokość akapitu. Domyślnie ustawia on szerokość na 50%. Jeśli 50% ma wartość mniejszą niż 45ch, używany jest atrybut 45ch, a jeśli 50% jest szerszy od 75ch, używany jest element 75ch.

Użyj funkcji clamp(), aby ustawić minimalną i maksymalną szerokość. Zobacz prezentację na platformie Codepen.

Możesz też podzielić tę grupę, używając tylko min() lub max(). Jeśli chcesz, aby element zawsze miał szerokość 50%, a szerokości maksymalnie 75ch na większych ekranach, użyj width: min(75ch, 50%);, aby ustawić maksymalny rozmiar.

Aby ustawić maksymalną szerokość, użyj funkcji min().

W ten sam sposób możesz ustawić minimalny rozmiar czytelnego tekstu za pomocą funkcji max() (np. width: max(45ch, 50%);). W tym przypadku przeglądarka wybiera tę, która jest większa, co oznacza, że element musi mieć rozmiar 45ch lub szerszy.

Użyj funkcji max(), aby ustawić minimalną szerokość.

Zarządzaj dopełnieniem

Możesz też użyć elementu max(), aby ustawić minimalny rozmiar dopełnienia. Ten przykład pochodzi z sztuczek CSS, gdzie czytelnik Caluão de Lacerda Pataca podzielił się tą koncepcją: wprowadzić dodatkowe dopełnienie przy większych rozmiarach ekranów i zachować minimalne dopełnienie przy mniejszych ekranach. Aby to zrobić, użyj funkcji calc() lub max() i odejmij minimalne dopełnienie po obu stronach elementu: calc((100vw - var(--contentWidth)) / 2) lub max(2rem, 50vw - var(--contentWidth) / 2). W arkuszu stylów powinno to wyglądać tak:

footer {
  padding: var(--blockPadding) max(2rem, 50vw - var(--contentWidth) / 2);
}
Ustaw minimalne dopełnienie dla komponentu za pomocą funkcji max(). Zobacz prezentację na platformie Codepen.

Płynna typografia

Aby umożliwić Płyną typografię, Mike Riethmeuller spopularyzował metodę, która korzysta z funkcji clamp() do ustawiania minimalnego i maksymalnego rozmiaru czcionki oraz zezwalania na skalowanie między tymi rozmiarami.

Użyj funkcji clamp(), aby utworzyć elastyczną typografię. Zobacz prezentację na platformie Codepen.

Przed clamp(), projektowanie skalowania czcionki wymagało złożonych ciągów stylów. Teraz przeglądarka może wykonać pracę za Ciebie. Ustaw minimalny akceptowalny rozmiar czcionki (na przykład 1.5rem w przypadku tytułu), maksymalny rozmiar (np. 3rem) i idealny rozmiar (np. 5vw). Dzięki temu typografia skaluje się odpowiednio do szerokości widocznego obszaru strony aż do osiągnięcia limitu wartości minimalnej i maksymalnej przy użyciu bardzo małego kodu:

p {
  font-size: clamp(1.5rem, 5vw, 3rem);
}

Więcej materiałów

Zdjęcie okładki od użytkownika @yer_a_wizard w aplikacji Unsplash.