W tej demonstracji ustawiasz szerokość za pomocą parametru clamp(): width: clamp(<min>, <actual>, <max>).
Służy do ustawiania bezwzględnego i maksymalnego rozmiaru oraz rzeczywistego rozmiaru. W przypadku wartości tego parametru mogą one wyglądać podobnie do tych:
.parent {
width: clamp(23ch, 60%, 46ch);
}
Minimalny rozmiar to 23ch – 23 znaki, a maksymalny – 46ch – 46 znaków. Jednostki szerokości znaków zależą od rozmiaru czcionki elementu (a konkretnie szerokości glifu 0). Rozmiar rzeczywisty to 50%, co stanowi 50% szerokości nadrzędnej tego elementu.
Funkcja clamp() pozwala elementowi zachować szerokość 50% do 50%, która będzie większa niż 46ch (w większych widocznych obszarach) lub mniejsza niż 23ch (w mniejszych widocznych obszarach). Na filmie zobacz, jak szerokość tej karty zwiększa się do zamocowanego punktu maksymalnego i maleje do minimum, gdy karta nadrzędna się rozciąga i zmniejsza. Pozostaje wyśrodkowany na elemencie nadrzędnym za pomocą dodatkowych właściwości. Umożliwia to tworzenie bardziej czytelnych układów, ponieważ tekst nie będzie zbyt szeroki (powyżej 46ch) ani zbyt wąski (poniżej 23ch).
Korzystając z tej techniki, możesz stosować elastyczną typografię. Na przykład: font-size: clamp(1.5rem, 20vw, 3rem). W takim przypadku rozmiar czcionki nagłówka zawsze będzie ograniczony od 1.5rem do 3rem, ale będzie się zwiększać i zmniejszać zgodnie z rzeczywistą wartością 20vw, aby dopasować ją do szerokości widocznego obszaru.
To świetny sposób na zapewnienie czytelności przy minimalnych i maksymalnych wartościach rozmiaru. Pamiętaj jednak, że nie jest ona obsługiwana we wszystkich nowoczesnych przeglądarkach, więc przygotuj kreacje zastępcze i przetestuj je.
HTML
<div class="parent">
<div class="card">
<h1>Title Here</h1>
<div class="visual"></div>
<p>Descriptive Text. Lorem ipsum dolor sit, amet consectetur adipisicing elit. Sed est error repellat veritatis.</p>
</div>
</div>
CSS
.parent {
display: grid;
place-items: center;
}
.card {
width: clamp(23ch, 60%, 46ch);
display: flex;
flex-direction: column;
padding: 1rem;
}
.visual {
height: 125px;
width: 100%;
}