Контрольные точки
Ширина, начиная с которой действует класс с префиксом, называется контрольной точкой (по-английски breakpoint): на ней макет страницы меняется. В Tailwind пять контрольных точек, у каждой свой префикс:
| Префикс | От | CSS | Типичные экраны |
|---|---|---|---|
sm: | 40rem (640 px) | @media (width >= 40rem) | телефоны в горизонтальном положении |
md: | 48rem (768 px) | @media (width >= 48rem) | планшеты |
lg: | 64rem (1024 px) | @media (width >= 64rem) | планшеты в горизонтальном положении, небольшие ноутбуки |
xl: | 80rem (1280 px) | @media (width >= 80rem) | ноутбуки и компьютеры |
2xl: | 96rem (1536 px) | @media (width >= 96rem) | большие мониторы |
Названия пришли от размеров одежды: small, medium, large и extra large, то есть «маленький», «средний», «большой» и «очень большой». Ширины заданы в rem, поэтому они подстраиваются под размер текста, который посетитель выбрал в браузере: при крупном тексте страница переключается на широкий макет позже, когда места для него действительно хватает.
Каждый префикс действует начиная со своей ширины, то есть и на всех более широких экранах. На картинке видно, какие префиксы действуют при ширинах из панели над предпросмотром: при 375 px — ни один, при 768 px — sm: и md:, а при 1280 px — все, кроме 2xl:.
Поэтому у одного элемента может быть несколько классов с разными префиксами, и каждый вступает в силу на своей контрольной точке:
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4">Один столбец на телефоне, два начиная с 640 px и четыре начиная с 1024 px. При 1280 px действуют и sm:grid-cols-2, и lg:grid-cols-4, так какой же из них побеждает? Решает каскад, как вы знаете из курса CSS: Tailwind пишет CSS для контрольных точек от самой маленькой до самой большой, поэтому правило для более широкого экрана идёт позже и побеждает. Порядок классов в атрибуте class не важен.
Задание
- 1
Карточки кошек лежат в сетке из четырёх столбцов: в
divс классамиgrid grid-cols-4 gap-6. Поэтому на телефоне они слишком узкие. Начните с телефона: в сетке заменитеgrid-cols-4наgrid-cols-1. Теперь карточки идут друг под другом при любой ширине. - 2
Добавьте сетке класс
sm:grid-cols-2. Переключите предпросмотр на 768 px: начиная с 640 px карточки расположены в два столбца. - 3
Добавьте сетке класс
lg:grid-cols-4. Переключите предпросмотр на 1280 px: начиная с 1024 px столбцов снова четыре. На 375 px он по-прежнему один.