CSS Grid Layout растет в браузере каждый день, и мы можем отправить CSS Grid на производство. Быстрое принятие CSS Grid было поистине замечательным.
Прежде чем мы перейдем к созданию адаптивного портфолио сайта с помощью CSS Grid, давайте разберем пару вещей: CSS Grid не заменяет Flexbox. Это даже не замена поплавков. На самом деле, вы можете понять, что мы использовали Flexbox для того, чтобы сделать CSS Grid намного лучше. Но вместо того, чтобы думать о замене, мы можем думать в терминах комбинации.
Представьте себе арахисовое масло и желе сэндвич. Арахисовое масло и желе отлично подходят сами по себе, но когда они собираются вместе, рождается новая вещь и происходит волшебство.
Вот как выглядят наши инструменты макета сайта. Они отлично подходят к тому, что они делают индивидуально, но когда они сочетаются, происходит волшебство, и мы можем создавать новые захватывающие макеты. В этом случае мы создадим собственный веб-проект PB & J с помощью CSS Grid и Flexbox.
Содержание статьи
01. Настройте свою разметку
К сожалению, у Grid нет возможности автоматически размещать элементы в макете сетки, которые мы видели в начале. К счастью для нас, однако, Grid дает нам инструменты, чтобы сделать это вручную довольно легко. В этом уроке мы будем e nth-child, чтобы разместить каждый элемент списка. На веб-сайте для производства мы советуем использовать класс, который при правильном планировании мог бы позволить автоматизировать макеты, подобные этому, на контент-тяжелом сайте.
Давайте начнем с нашего первого элемента.
@media screen и (min-width: 40em) {
.boxes li: nth-child (1) {
grid-column: 1 / -1;
строка сетки: диапазон 3;
}
}
. Мы будем размещать все наши стили размещения внутри этого медиа-запроса, который мы писали ранее, потому что мы хотим, чтобы этот макет произошел после того, как наш браузер равен 40 или более. С nth-child мы нацеливаем первый элемент списка. CSS Grid позволяет нам легко размещать наши элементы с помощью столбца сетки и строки сетки. Существует много разных способов указать, где должны быть элементы, но здесь мы говорим, что наш элемент начинается с строки столбца один и охватывает весь контейнер с -1.
Затем, со строкой-сеткой, мы говорим элемент, чтобы охватить три строки. Как мы узнаем, что три строки будут размером, который мы хотим? Ну, мы указали размер этих строк с помощью grid-auto-rows несколько мгновений назад, и если мы не удовлетворены ими, мы сможем изменить минимальный размер.
Давайте поместим остальные наши предметы.
@media screen и (min-width: 40em) {
.boxes li: nth-child (2) {
grid-column: span 2;
строка сетки: диапазон 7;
}
.boxes li: nth-child (3) {
grid-column: span 4;
строка сетки: диапазон 3;
}
.boxes li: nth-child (4) {
grid-column: span 2;
строка сетки: диапазон 4;
}
.boxes li: nth-child (5),
.boxes li: nth-child (6) {
grid-column: span 2;
row-row: span 2;
}
}
Разве это не удивительно, насколько нам помогает контрольная сетка? Имея всего несколько строк кода, мы можем собрать полностью отзывчивый макет, который не сломается, если добавится больше элементов.
Конечно, они могут выглядеть немного неудобно, потому что по умолчанию они будут занимать только один столбец и строку сетки, но это не нарушает наш макет. Если бы мы делали это с поплавками, фиксированными ширинами и высотами, мы были бы привязаны, если бы было добавлено больше контента.
Быстро обойти старые браузеры
Хорошо, пришло время обратитесь к слону в комнате. «Как насчет старых браузеров?» Ответ на этот вопрос такой же, как и для любой новой функции в CSS: используйте запросы функций и охватывайте каскад. Функциональные запросы очень хорошо поддерживаются, и там, где они есть, мы не можем помещать наш резерв в первую очередь. Например, мы напишем что-то по строкам:
. Ваш селектор {
дисплей: flex;
}
/ * Ваш сетевой код * /
@supports (display: grid) {
отображение: сетка;
grid-template-columns: repeat (3, 1fr);
сетчатый зазор: 1rem 2rem;
}
Написание нашего кода таким образом означает, что если браузер понимает Grid Layout, он будет использовать это вместо Flexbox. Кроме того, поскольку мы охватываем каскад, браузеры, которые не понимают функциональные запросы, будут игнорировать их и уже иметь необходимую им информацию. Возможно, нам придется планировать, как мы пишем наши стили немного больше, чем обычно, но, делая это, мы можем создавать великолепные макеты с разумными резервными копиями.
Кроме того, со временем будет больше и больше больше поддержки CSS Grid. Подумайте, как здорово было бы потом удалить наши резервные копии и оставить все связанные с Grid CSS. По мере того, как вы узнаете больше о Grid, вы поймете, что он делает много вещей, которые мы делаем сейчас, с гораздо меньшим количеством CSS.
Эта статья изначально появилась в net magazine ведущий мировой журнал для разработчиков и веб-дизайнеров. Подпишитесь здесь .
Подробнее: