CSS-сетка. Разметка · Bootstrap v5.2.2
Сетка по умолчанию в Bootstrap представляет собой кульминацию более чем десятилетних методов компоновки CSS, опробованных и протестированных миллионами людей. Но он также был создан без многих современных функций и методов CSS, которые мы видим в браузерах, таких как новая CSS Grid.
Внимание! Наша система CSS Grid является экспериментальной и поддерживает версию 5.1.0! Мы включили ее в CSS нашей документации, чтобы продемонстрировать ее вам, но по умолчанию она отключена. Продолжайте читать, чтобы узнать, как включить его в свои проекты.
Как это устроено
В Bootstrap 5 мы добавили возможность включения отдельной системы сеток, построенной на CSS Grid, но с поворотом Bootstrap. Вы по-прежнему получаете классы, которые можете применять по прихоти для создания адаптивных макетов, но с другим подходом под капотом.
-
CSS Grid включен. Отключите сетку по умолчанию, установив
$enable-grid-classes: false
$enable-cssgrid: true
. Затем перекомпилируйте свой Sass. -
Замените экземпляры
.row
на.grid
. Класс.grid
устанавливаетdisplay: grid
и создаетgrid-template
, который вы создаете с помощью вашего HTML. -
Замените классы
.col-*
классами.g-col-*
. Это потому, что наши столбцы CSS Grid используют свойствоgrid-column
вместоwidth
. -
Столбцы и размеры отступа устанавливаются с помощью переменных CSS. Задайте их в родительском
.grid
и настройте, как хотите, встроенным или в таблице стилей, с помощью--bs-columns
и--bs-gap
.
В будущем Bootstrap, вероятно, перейдет к гибридному решению, поскольку свойство gap
обеспечило почти полную поддержку браузером flexbox.
Ключевые отличия
Сравнение с сеткой по умолчанию:
-
Утилиты Flex не влияют на столбцы CSS Grid таким же образом.
-
Заменяет зазоры водосточные отступа. Свойство
gap
заменяет горизонтальныйpadding
из нашей системы сетки по умолчанию и работает больше какmargin
. -
Таким образом, в отличие от
.row
,.grid
не имеет отрицательного отступа, и утилиты отступа не могут использоваться для изменения промежутков сетки. Промежутки сетки по умолчанию применяются по горизонтали и вертикали. Смотрите раздел кастомизации для получения более подробной информации. -
Встроенные и пользовательские стили следует рассматривать как замену для классов модификаторов (например,
противclass="row-cols-3"
). -
Вложение работает аналогично, но может потребовать от вас сбросить счетчик столбцов для каждого экземпляра вложенного файла
.grid
. Смотрите раздел вложенности для получения подробной информации.
Примеры
Три колонки
Три столбца одинаковой ширины во всех окнах просмотра и на всех устройствах могут быть созданы с помощью классов .g-col-4
. Добавьте отзывчивые классы, чтобы изменить макет по размеру области просмотра.
.g-col-4
.g-col-4
.g-col-4
<div> <div>.g-col-4</div> <div>.g-col-4</div> <div>.g-col-4</div> </div>
Адаптивность
Используйте адаптивные классы, чтобы настроить макет во всех окнах просмотра. Здесь мы начинаем с двух столбцов на самых узких окнах просмотра, а затем увеличиваем до трех столбцов на средних и выше.
.g-col-6 .g-col-md-4
.g-col-6 .g-col-md-4
.g-col-6 .g-col-md-4
<div> <div>.g-col-6 .g-col-md-4</div> <div>.g-col-6 .g-col-md-4</div> <div>.g-col-6 .g-col-md-4</div> </div>
Сравните это с макетом из двух столбцов во всех окнах просмотра.
.g-col-6
.g-col-6
<div> <div>.g-col-6</div> <div>.g-col-6</div> </div>
Обертка
Элементы сетки автоматически переносятся на следующую строку, когда по горизонтали больше нет места. Обратите внимание, что gap
применяется к горизонтальным и вертикальным промежуткам между элементами сетки.
.g-col-6
.g-col-6
.g-col-6
.g-col-6
<div> <div>.g-col-6</div> <div>.g-col-6</div> <div>.g-col-6</div> <div>.g-col-6</div> </div>
Начало
Стартовые классы призваны заменить классы смещения нашей сетки по умолчанию, но они не совсем такие же. CSS-Сетка создает шаблон сетки с помощью стилей, которые говорят браузерам «начинать с этого столбца» и «заканчиваться в этом столбце». Это свойства grid-column-start
и grid-column-end
. Стартовые классы являются сокращением для первых. Соедините их с классами столбцов, чтобы задать размер и выровнять столбцы, как вам нужно. Начальные классы начинаются с 1
, поскольку 0
является недопустимым значением для этих свойств.
.g-col-4 .g-start-6
<div> <div>.g-col-3 .g-start-2</div> <div>.g-col-4 .g-start-6</div> </div>
Авто колонки
Когда в элементах сетки нет классов (непосредственные дочерние элементы для .grid
), размер каждого элемента сетки автоматически будет равен одному столбцу.
1
1
1
1
1
1
1
1
1
1
1
1
<div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> </div>
Это поведение можно смешивать с классами столбцов сетки.
.g-col-6
1
1
1
1
1
1
<div> <div>.g-col-6</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> <div>1</div> </div>
Вложенность
Подобно нашей сетке по умолчанию, наша CSS Grid позволяет легко встраивать файлы .grid
. Однако, в отличие от значения по умолчанию, эта сетка наследует изменения в строках, столбцах и промежутках. Рассмотрим пример ниже:
- Мы переопределяем количество столбцов по умолчанию с помощью локальной переменной CSS:
--bs-columns: 3
. - В первом автоматическом столбце количество столбцов наследуется, и каждый столбец составляет одну треть доступной ширины.
- Во втором автоматическом столбце мы сбросили счетчик столбцов во вложенном
.grid
на 12 (наше значение по умолчанию). - В третьем автоколонке нет вложенного содержимого.
На практике это позволяет создавать более сложные и настраиваемые макеты по сравнению с нашей сеткой по умолчанию.
Первая автоколонка
Автоколонка
Автоколонка
Вторая автоколонка
6 of 12
4 of 12
2 of 12
Третья автоколонка
<div> <div> Первая автоколонка <div> <div>Автоколонка</div> <div>Автоколонка</div> </div> </div> <div> Вторая автоколонка <div> <div>6 of 12</div> <div>4 of 12</div> <div>2 of 12</div> </div> </div> <div>Третья автоколонка</div> </div>
Кастомизация
Настройте количество столбцов, количество строк и ширину промежутков с помощью локальных переменных CSS.
Переменная | Резервное значение | Описание |
---|---|---|
--bs-rows |
1 |
Количество строк в шаблоне сетки |
--bs-columns |
12 |
Количество столбцов в шаблоне сетки |
--bs-gap |
1.5rem |
Размер промежутка между столбцами (по вертикали и горизонтали) |
Эти переменные CSS не имеют значения по умолчанию; вместо этого они применяют резервные значения, которые используются до тех пор, пока не будет предоставлен локальный экземпляр. Например, мы используем var(--bs-rows, 1)
для наших строк CSS Grid, который игнорирует --bs-rows
, потому что он еще нигде не установлен. Как только это произойдет, экземпляр .grid
будет использовать это значение вместо резервного значения 1
.
Без классов сетки
Непосредственные дочерние элементы для .grid
являются элементами сетки, поэтому их размер будет изменяться без явного добавления класса .g-col
.
Автоколонка
Автоколонка
Автоколонка
<div> <div>Автоколонка</div> <div>Автоколонка</div> <div>Автоколонка</div> </div>
Столбцы и промежутки
Отрегулируйте количество столбцов и промежутков.
.g-col-2
.g-col-2
<div> <div>.g-col-2</div> <div>.g-col-2</div> </div>
.g-col-6
.g-col-4
<div> <div>.g-col-6</div> <div>.g-col-4</div> </div>
Добавление строк
Добавление дополнительных строк и изменение размещения столбцов:
Автоколонка
Автоколонка
Автоколонка
<div> <div>Автоколонка</div> <div>Автоколонка</div> <div>Автоколонка</div> </div>
Промежутки
Изменяйте вертикальные промежутки, только изменяя row-gap
. Обратите внимание, что мы используем gap
в .grid
, но row-gap
и column-gap
можно изменить по мере необходимости.
.g-col-6
.g-col-6
.g-col-6
.g-col-6
<div> <div>.g-col-6</div> <div>.g-col-6</div> <div>.g-col-6</div> <div>.g-col-6</div> </div>
Из-за этого у вас могут быть разные вертикальные и горизонтальные gap
, которые могут принимать одно значение (все стороны) или пару значений (вертикальное и горизонтальное). Это может быть применено со встроенным стилем для gap
или с нашей CSS-переменной --bs-gap
.
.g-col-6
.g-col-6
.g-col-6
.g-col-6
<div> <div>.g-col-6</div> <div>.g-col-6</div> <div>.g-col-6</div> <div>.g-col-6</div> </div>
Sass
Одним из ограничений CSS Grid является то, что наши классы по умолчанию по-прежнему генерируются двумя переменными Sass: $grid-columns
и $grid-gutter-width
. Это фактически предопределяет количество классов, сгенерированных в нашем скомпилированном CSS. У вас есть два варианта:
- Измените эти переменные Sass по умолчанию и перекомпилируйте свой CSS.
- Используйте встроенные или настраиваемые стили для расширения предоставленных классов.
Например, вы можете увеличить количество столбцов и изменить размер зазора, а затем изменить размер «столбцов» с помощью сочетания встроенных стилей и предопределенных классов столбцов таблицы CSS (например, .g-col-4
).
14 колонок
.g-col-4
<div> <div>14 колонок</div> <div>.g-col-4</div> </div>
Грид-разметка CSS: модуль CSS Grid Layout
5 июля, 2022 12:28 пп 24 views | Комментариев нетDevelopment | Amber | Комментировать запись
Flexbox, конечно, великолепный инструмент, но его основная цель — помочь с позиционированием элементов только в одном измерении, горизонтальном или вертикальном. Для двумерного макета всей страницы мы в основном полагались на такие фреймворки, как Bootstrap или Foundation, которые предоставляют нам классы, которые мы можем использовать для создания макета сетки. Новый модуль CSS Grid Layout, который скоро будет доступен в браузерах, должен изменить все это.
Давайте рассмотрим CSS Grid с очень кратким обзором. Во-первых, несколько ключевых моментов, о которых следует помнить:
- Как и в Flexbox, в CSS Grid исходный порядок не имеет значения, элементы можно легко перемещать в зависимости от размера области просмотра.
- Начать использовать грид-разметку можно прямо сейчас. Обнаружение функций с помощью @supports позволит вам применять разметку только в браузерах, которые ее поддерживают.
- CSS Grid позволяет реализовать некоторые макеты, которые невозможно реализовать даже с помощью грид-системы современных фреймворков CSS.
Основные понятия CSS Grid
Прежде чем приступить к работе с CSS Grid, неплохо было бы ознакомиться с терминологией.
Грид-линия: элементы располагаются в сетке, а линии отмечают, где начинается и заканчивается элемент. Поэтому грид-линии играют ведущую роль в работе CSS Grid. Грид-линии столбцов нумеруются слева направо, начиная с 1; линии строк нумеруются сверху вниз, начиная с 1.
Грид-полосы (или грид-треки) – это пространство между двумя грид-линиями.
Грид-область – это область, определяемая любыми 4 линиями сетки.
Грид-ячейка – пространство на пересечении конкретного столбца и строки; наименьшая единица, возможная в сетке.
Родительские и дочерние элементы грид-разметки
Грид-разметка включает в себя элемент контейнера и дочерние элементы, которые становятся элементами сетки (немного напоминает flexbox). Для элемента контейнера достаточно установить display: grid. Строки и столбцы сетки определяются с помощью grid-template-columns и grid-template-rows.
Начнем со следующей разметки:
<div> <div>Box 1</div> <div>Box 2</div> <div>Box 3</div> <div>Box 4</div> <div>Box 5</div> <div>Box 6</div> <div>Box 7</div> </div>
Вот как мы можем определить CSS для контейнера:
. container { display: grid; grid-template-columns: 150px 150px 80px; grid-template-rows: 100px auto; grid-gap: 10px 15px; }
Мы получаем интересный результат, даже не задавая никаких свойств элементам сетки:
Обратите внимание: мы добавили 10 пикселей по горизонтали и 15 пикселей по вертикали между ячейками, используя grid-gap.
Теперь мы можем пойти дальше и определить начальную и конечную линии конкретных элементов. Элементы, которые не размещены в сетке явно, будут размещены согласно алгоритму. Мы используем grid-column-start, grid-column-end, grid-row-start и grid-row-end, чтобы определить, где в сетке начинается и заканчивается элемент:
.box-1 { grid-column-start: 1; grid-column-end: 3; } .box-3 { grid-column-start: 1; grid-column-end: 3; grid-row-start: 2; grid-row-end: 4; }
Также можно использовать сокращения grid-column и grid-row (результат будет такой же):
. box-1 { grid-column: 1 / 3; } .box-3 { grid-column: 1 / 3; grid-row: 2 / 4; }
Вот что получится:
Примечание: Промежутки не добавляют новых линий сетки, поэтому элементы, расположенные рядом друг с другом, касаются одной и той же линии, даже если визуально их разделяет зазор.
Поддержка CSS Grid Layout
Этот модуль по умолчанию поддерживается в Firefox, начиная с версии 52. Также он полностью поддерживается в последних версиях Chrome и Opera, а еще в IE и Edge, но с более старым синтаксисом.
Дополнительные материалы
В этом материале мы собрали лишь базовую информацию по вопросу. Однако в грид-разметке CSS есть еще много разных возможностей и функций. Если вы хотите развивать свои навыки работы с разметкой, читайте также:
- Грид-разметка CSS: ключевое слово span
- Грид-разметка CSS: как работает нотация repeat
- Грид-разметка CSS: макет Holy Grail
Вот несколько отличных ресурсов для изучения тонкостей грид-разметки CSS:
- Полное руководство по грид-разметке CSS
- Примеры использования грид-разметки.
- Демо-макеты от Джен Симмонс
Свойство CSS grid-column
❮ Назад Полное руководство по CSS Далее ❯
Пример
Сделать так, чтобы «item1» начинался со столбца 1 и занимал 2 столбца:
.item1 {
grid-column: 1 / span 2;
}
Попробуйте сами »
Определение и использование
Свойство grid-column
определяет сетку
размер и расположение элемента в макете сетки, и является сокращенным свойством для
следующие свойства:
- grid-column-start
- сетка-колонна-конец
Показать демо ❯
Значение по умолчанию: | авто / авто |
---|---|
Унаследовано: | нет |
Анимация: | да. Читать о анимированном Попытайся |
Версия: | Модуль компоновки сетки CSS, уровень 1 |
Синтаксис JavaScript: | объект . style.gridColumn=»2 / диапазон 2″ Попытайся |
Поддержка браузера
Числа в таблице указывают первую версию браузера, которая полностью поддерживает это свойство.
Собственность | |||||
---|---|---|---|---|---|
сетка-колонна | 57 | 16 | 52 | 10 | 44 |
Синтаксис CSS
столбец сетки: начало столбца сетки / конец столбца сетки ;
Значения свойств
Значение | Описание | Демо |
---|---|---|
сетка-столбец-начало | Указывает, в каком столбце начинать отображение элемента. | Демонстрация ❯ |
сетка-конец колонны | Указывает, в какой строке столбца прекратить отображение элемента или сколько столбцов охватывать. | Демонстрация ❯ |
Дополнительные примеры
Пример
Вы можете использовать значения строки столбца вместо количества столбцов для охвата:
.item1 {
grid-column: 1 / 3;
}
Попробуйте сами »
Связанные страницы
Учебник по CSS: CSS Grid Layout
❮ Предыдущая Полное руководство по CSS Следующий ❯
НАБОР ЦВЕТА
Лучшие учебники
Учебник HTMLУчебник CSS
Учебник JavaScript
How To Tutorial
Учебник SQL
Учебник Python
Учебник W3.CSS
Учебник Bootstrap
Учебник PHP
Учебник Java
Учебник C++
Учебник jQuery
9004 Справочник
Справочник по HTML
Справочник по CSS
Справочник по JavaScript
Справочник по SQL
Справочник по Python
Справочник по W3.CSS
Справочник по Bootstrap
Справочник по PHP
Цвета HTML
Справочник по Java
Справочник по Angular
Справочник по jQuery
Основные примеры
Примеры HTMLПримеры CSS
Примеры JavaScript
Примеры инструкций
Примеры SQL
Примеры Python
Примеры W3. CSS
Примеры Bootstrap
Примеры PHP
Примеры Java
Примеры XML
Примеры jQuery
FORUM | О
W3Schools оптимизирован для обучения и обучения. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно пересматриваются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего содержания. Используя W3Schools, вы соглашаетесь прочитать и принять наши условия использования, куки-файлы и политика конфиденциальности.
Copyright 1999-2022 Refsnes Data. Все права защищены.
W3Schools работает на основе W3.CSS.
Свойство шаблона сетки CSS
❮ Назад Полное руководство по CSS Далее ❯
Пример
Создайте сетку из трех столбцов, где первый ряд имеет высоту 150 пикселей:
.grid-container {
display: grid;
шаблон сетки: 150 пикселей
/ авто авто авто;
}
Попробуйте сами »
Определение и использование
Свойство grid-template
является сокращенным свойством для
следующие свойства:
- строки шаблона сетки
- сетка-шаблон-столбцы
- области сетки-шаблона
Показать демо ❯
Значение по умолчанию: | нет нет нет |
---|---|
Унаследовано: | нет |
Анимация: | да. Читать о анимированном Попытайся |
Версия: | Модуль компоновки сетки CSS, уровень 1 |
Синтаксис JavaScript: | объект .style.gridTemplate=»250px / auto auto» Попытайся |
Поддержка браузера
Числа в таблице указывают первую версию браузера, которая полностью поддерживает это свойство.
Собственность | |||||
---|---|---|---|---|---|
шаблон сетки | 57 | 16 | 52 | 10 | 44 |
Синтаксис CSS
grid-template: none| строк шаблона сетки / сетка-шаблон-столбцы | grid-template-areas |initial|inherit;
Значения свойств
Значение | Описание | Демо |
---|---|---|
нет | Значение по умолчанию. Нет определенного размера столбцов или строк | |
строки шаблона сетки / столбцы шаблона сетки | Задает размеры столбцов и строк | Демонстрация ❯ |
области сетки-шаблона | Задает макет сетки с использованием именованных элементов | Демонстрация ❯ |
начальный | Устанавливает для этого свойства значение по умолчанию. Читать о начальных | |
унаследовать | Наследует это свойство от родительского элемента. Читать о наследовать |
Дополнительные примеры
Пример
Укажите две строки, где «item1» охватывает первые два столбца в первых двух строки (в сетке из пяти столбцов):
.item1 {
grid-area: myArea;
}
.grid-container {
display: grid;
шаблон сетки:
‘моя область моя область . . .’
‘моя область моя область . . .’;
}
Попробуйте сами »
Пример
Назовите все элементы и создайте готовый к использованию шаблон веб-страницы:
.item1 { область сетки: заголовок; }
.item2 { область сетки:
меню; }
.item3 { область сетки:
главный; }
.item4 { область сетки:
Правильно; }
.item5 { область сетки:
нижний колонтитул; }
.grid-container {
display: grid;
шаблон сетки:
‘заголовок заголовка заголовка заголовка заголовка заголовка’
‘menu main main main right’
‘нижний колонтитул меню
нижний колонтитул нижний колонтитул’;
}
Попробуйте сами »
Связанные страницы
Учебник CSS: CSS Grid Item
Справочник по CSS: свойство grid-area
Справочник по CSS: свойство grid-template-rows
Справочник по CSS: сетка -template-columns property
Справочник по CSS: свойство grid-template-areas
❮ Назад Полное руководство по CSS Далее ❯
НАБОР ЦВЕТА
Лучшие учебники
Учебник HTMLУчебник CSS
Учебник JavaScript
How To Tutorial
Учебник SQL
Учебник Python
Учебник W3.