Wyszukaj / o blogu

CSS - max(), min(), clamp()

Opublikowano ndz 24 maja 2020 w css • 2 min read

min() - jest funkcją CSS i pozwala na oznaczenie najmniejszej wartości w przypadku szerokości obiektu i przyjmuje jedno lub więcej wyrażeń rozgraniczonych przecinkami jako parametry (istnieje możliwość mieszania jednostek np. px, vw, %) - najmniejszy z dwóch podanych parametrów w danym momencie jest obowiązujący.

.second-level {
  width: min(50vw, 400px);
}

Przykładowo powyższy zapis zakłada, że dany element o klasie second-level będzie miał szerokość 400px do momentu, w którym połowa szerokości ekranu (50vw, innymi słowy gdy ekran jest węższy od 800px) nie będzie mniejsza niż 400px i wówczas przyjmie wartość 50vw. Ubierając to w inne słowa, dany element będzie zajmował połowę szerokości ekranu jeśli ten będzie mniejszy niż 800px, a w przypadku szerszych ekranów jego szerokość będzie maksymalnie wynosiła 400px.

Innymi słowy min() oznacza podanie maksymalnej wartości jaką może mieć dany element


max() - jest funkcją podobną do min() jednak odnosi się do maksymalnej wartości danego elementu - również przyjmuje jedną lub więcej wyrażeń jako parametr. Za wartość, ustawiającą szerokość przyjmuje największą wartość z podanych parametrów

.second-level {
    width: max(50vw, 400px);
}

Powyższe wyrażenie zakłada, że dany element o klasie second-level będzie miał szerokość 400px do momentu, w którym połowa ekranu nie będzie większa niż 800 px i wówczas przyjmie wartość połowy szerokości ekranu (50vw). Dla ekranu węższego niż 400px zajmie 100% rodzica.

Innymi słowy max() oznacza podanie minimalnej (największej w danym momencie) wartości jaką może mieć dany element

Inny przykład oznacza maksymalną wielkość fontu na stronie, który będzie zależny od jego rozmiaru np.

p {
  font-size: max(4vw, 2em, 2rem)
}

clamp() - pozwala na zdefiniowanie przedziału, w ramach, które powinien zamknąć się dany element. Przyjmuje trzy wartości - minimalną, preferowaną oraz maksymalną -> clamp(MIN, VAL, MAX). Tym samym istnieje możliwość ustawienia wielkości elementu, który zmieniać się będzie razem z wielkością ekranu ale nie będzie mniejsza niż dana wartość ani większa od innej podanej.

p {
  font-size: max(1rem, 2.5vw, 2rem)
}

Źrdóła:

https://developer.mozilla.org/en-US/docs/Web/CSS/min

https://developer.mozilla.org/en-US/docs/Web/CSS/max

https://css-tricks.com/snippets/css/fluid-typography/