Система сетки
Пример
Система сетки Bootstrap использует серию контейнеров, строк и столбцов для размещения и выравнивания содержимого. Она построена с помощью flexbox и полностью адаптивна. Ниже приведен пример и подробное объяснение того, как работает система сетки.
<div class="container text-center">
<div class="row">
<div class="col">
Column
</div>
<div class="col">
Column
</div>
<div class="col">
Column
</div>
</div>
</div>
Приведенный выше пример создает три столбца равной ширины на всех устройствах и разрешениях, используя наши предопределенные классы сетки. Эти столбцы центрированы на странице с помощью родительского .container.
Как это работает
Рассмотрим подробнее, как работает система сетки:
-
Наша сетка поддерживает шесть адаптивных точек разрыва. Точки разрыва основаны на
min-widthмедиа-запросах, что означает, что они влияют на эту точку разрыва и все точки разрыва выше нее (например,.col-sm-4применяется кsm,md,lg,xlиxxl). Это означает, что вы можете контролировать размер и поведение контейнеров и столбцов по каждой точке разрыва. -
Контейнеры центрируют и горизонтально отступают от содержимого. Используйте
.containerдля адаптивной ширины в пикселях,.container-fluidдляwidth: 100%на всех разрешениях и устройствах, или адаптивный контейнер (например,.container-md) для сочетания адаптивной и фиксированной ширины. -
Строки являются обёртками для столбцов. Каждый столбец имеет горизонтальные
padding(так называемые отступы) для управления пространством между ними. Этотpaddingзатем компенсируется отрицательными отступами в строках, чтобы убедиться, что содержимое столбцов визуально выровнено по левому краю. Строки также поддерживают модификаторы, чтобы равномерно применить размеры столбцов и классы отступов для изменения интервала содержимого. -
Столбцы невероятно гибкие. Доступно 12 шаблонных столбцов на строку, позволяющих создавать различные комбинации элементов, охватывающих любое количество столбцов. Классы столбцов указывают количество шаблонных столбцов для охвата (например,
col-4охватывает четыре).widthзадаются в процентах, поэтому вы всегда имеете одинаковый относительный размер. -
Отступы также адаптивны и настраиваемы. Доступны классы отступов по всем точкам разрыва с теми же размерами, что и наши отступы и поля. Измените горизонтальные отступы с помощью
.gx-*классов, вертикальные отступы с помощью.gy-*, или все отступы с помощью.g-*классов..g-0также доступен для удаления отступов. -
Переменные, карты и миксины Sass управляют сеткой. Если вы не хотите использовать предопределенные классы сетки Bootstrap, вы можете использовать наш исходный Sass сетки для создания своих собственных с более семантичным разметкой. Мы также включаем некоторые CSS-переменные для использования этих переменных Sass для ещё большей гибкости.
Учитывайте ограничения и ошибки в flexbox, такие как невозможность использования некоторых HTML-элементов в качестве flex-контейнеров.
Варианты сетки
Система сетки Bootstrap может адаптироваться ко всем шести стандартным точкам разрыва и любым настраиваемым точкам разрыва. Шесть стандартных уровней сетки следующие:
- Экстра малый (xs)
- Малый (sm)
- Средний (md)
- Большой (lg)
- Экстра большой (xl)
- Экстра экстра большой (xxl)
Как упоминалось выше, каждая из этих точек разрыва имеет свой собственный контейнер, уникальный префикс класса и модификаторы. Вот как сетка меняется между этими точками разрыва:
| xs <576px | sm ≥576px | md ≥768px | lg ≥992px | xl ≥1200px | xxl ≥1400px | |
|---|---|---|---|---|---|---|
Контейнер max-width
| Нет (авто) | 540px | 720px | 960px | 1140px | 1320px |
| Префикс класса | .col- | .col-sm- | .col-md- | .col-lg- | .col-xl- | .col-xxl- |
| # столбцов | 12 | |||||
| Ширина отступа | 1.5rem (.75rem слева и справа) | |||||
| Настраиваемые отступы | Да | |||||
| Вложенные | Да | |||||
| Порядок столбцов | Да | |||||
Авторазметка столбцов
Используйте классы столбцов, специфичные для точки разрыва, для лёгкого изменения размеров столбцов без явного класса с числом, например .col-sm-6.
Столбцы одинаковой ширины
Например, вот два макета сетки, которые применяются ко всем устройствам и разрешениям, от xs до xxl. Добавьте любое количество бесклассовых классов для каждой необходимой точки разрыва, и каждый столбец будет иметь одинаковую ширину.
<div class="container text-center">
<div class="row">
<div class="col">
1 of 2
</div>
<div class="col">
2 of 2
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col">
2 of 3
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
Установление ширины одного столбца
Автоматическое расположение для столбцов flexbox-сетки также означает, что вы можете установить ширину одного столбца и иметь соседние столбцы, автоматически подстраивающиеся вокруг него. Вы можете использовать предопределённые классы сетки (как показано ниже), миксины сетки или ширины в строке. Обратите внимание, что другие столбцы изменят размер независимо от ширины центрального столбца.
<div class="container text-center">
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-6">
2 of 3 (wider)
</div>
<div class="col">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-5">
2 of 3 (wider)
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
Содержимое переменной ширины
Используйте col-{breakpoint}-auto классы для задания размеров столбцов на основе естественной ширины их содержимого.
<div class="container text-center">
<div class="row justify-content-md-center">
<div class="col col-lg-2">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
</div>
Адаптивные классы
Система сетки Bootstrap включает шесть уровней предопределенных классов для создания сложных адаптивных макетов. Настраивайте размер столбцов на устройствах с экстра малым, малым, средним, большим или экстра большим размером, как вам удобно.
Все точки разрыва
Для сеток, которые одинаковы от самых маленьких устройств до самых больших, используйте классы .col и .col-*. Указывайте классы с номерами, когда вам нужен столбец определённого размера; в противном случае, можете использовать .col.
<div class="container text-center">
<div class="row">
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
<div class="col">col</div>
</div>
<div class="row">
<div class="col-8">col-8</div>
<div class="col-4">col-4</div>
</div>
</div>
Сверху вниз – в горизонтальное
Используя один набор .col-sm-* классов, вы можете создать базовую систему сетки, которая начинаете сверху вниз и становится горизонтальной на малом разрешении (sm).
<div class="container text-center">
<div class="row">
<div class="col-sm-8">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
</div>
Сочетание
Не хотите, чтобы ваши столбцы просто складывались в некоторых уровнях сетки? Используйте комбинацию различных классов для каждого уровня по мере необходимости. Посмотрите на пример ниже, чтобы лучше понять, как всё работает.
<div class="container text-center">
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
<div class="col-md-8">.col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-6">.col-6</div>
<div class="col-6">.col-6</div>
</div>
</div>
Столбцы строк
Используйте адаптивные .row-cols-* классы, чтобы быстро задать количество столбцов, которые лучше всего отображают ваше содержимое и макет. В то время как обычные .col-* классы применяются к отдельным столбцам (например, .col-md-4), классы столбцов строк устанавливаются на родительской .row в качестве сокращения. С .row-cols-auto вы можете дать столбцам их естественную ширину.
Используйте эти классы столбцов строк для быстрого создания базовых макетов сетки или для управления макетами карточек.
<div class="container text-center">
<div class="row row-cols-2">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container text-center">
<div class="row row-cols-3">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container text-center">
<div class="row row-cols-auto">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container text-center">
<div class="row row-cols-4">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container text-center">
<div class="row row-cols-4">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col-6">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container text-center">
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-4">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
Вы также можете использовать сопроводительный Sass-миксин, row-cols():
.element {
// Three columns to start
@include row-cols(3);
// Five columns from medium breakpoint up
@include media-breakpoint-up(md) {
@include row-cols(5);
}
}
Вложенность
Чтобы вложить ваш контент в стандартную сетку, добавьте новую .row и набор .col-sm-* колонок внутри существующей .col-sm-* колонки. Вложенные строки должны содержать набор колонок, сумма ширины которых не превышает 12 (не обязательно использовать все 12 доступных колонок).
<div class="container text-center">
<div class="row">
<div class="col-sm-3">
Level 1: .col-sm-3
</div>
<div class="col-sm-9">
<div class="row">
<div class="col-8 col-sm-6">
Level 2: .col-8 .col-sm-6
</div>
<div class="col-4 col-sm-6">
Level 2: .col-4 .col-sm-6
</div>
</div>
</div>
</div>
</div>
CSS
При использовании исходных Sass-файлов Bootstrap у вас есть возможность использовать Sass-переменные и миксины для создания настраиваемых, семантических и адаптивных макетов страниц. Наши предопределенные классы сетки используют те же переменные и миксины, чтобы предоставить целый набор готовых к использованию классов для быстрой адаптивной верстки.
Sass-переменные
Переменные и карты определяют количество колонок, ширину промежутков между ними и точку медиа-запроса, с которой начинаются плавающие колонки. Мы используем их для генерации предопределённых классов сетки, описанных выше, а также для пользовательских миксинов, перечисленных ниже.
$grid-columns: 12; $grid-gutter-width: 1.5rem; $grid-row-columns: 6;
$grid-breakpoints: ( xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px );
$container-max-widths: ( sm: 540px, md: 720px, lg: 960px, xl: 1140px, xxl: 1320px );
Sass-миксины
Миксины используются совместно с переменными сетки для генерации семантического CSS для отдельных колонок сетки.
// Creates a wrapper for a series of columns @include make-row(); // Make the element grid-ready (applying everything but the width) @include make-col-ready(); // Without optional size values, the mixin will create equal columns (similar to using .col) @include make-col(); @include make-col($size, $columns: $grid-columns); // Offset with margins @include make-col-offset($size, $columns: $grid-columns);
Пример использования
Вы можете изменить переменные на свои собственные значения или просто использовать миксины с их значениями по умолчанию. Вот пример использования значений по умолчанию для создания двухколоночного макета с промежутком.
.example-container {
@include make-container();
// Make sure to define this width after the mixin to override
// `width: 100%` generated by `make-container()`
width: 800px;
}
.example-row {
@include make-row();
}
.example-content-main {
@include make-col-ready();
@include media-breakpoint-up(sm) {
@include make-col(6);
}
@include media-breakpoint-up(lg) {
@include make-col(8);
}
}
.example-content-secondary {
@include make-col-ready();
@include media-breakpoint-up(sm) {
@include make-col(6);
}
@include media-breakpoint-up(lg) {
@include make-col(4);
}
}
<div class="example-container">
<div class="example-row">
<div class="example-content-main">Main content</div>
<div class="example-content-secondary">Secondary content</div>
</div>
</div>
Настройка сетки
Используя встроенные Sass-переменные и карты сетки, можно полностью настроить предопределённые классы сетки. Измените количество уровней, размеры медиа-запросов и ширину контейнеров — затем перекомпилируйте.
Колонки и промежутки
Количество колонок сетки можно изменить через Sass-переменные. $grid-columns используется для генерации ширины (в процентах) каждой отдельной колонки, а $grid-gutter-width задаёт ширину промежутков между колонками. $grid-row-columns используется для установки максимального числа колонок .row-cols-*, любое число больше этого предела игнорируется.
$grid-columns: 12 !default; $grid-gutter-width: 1.5rem !default; $grid-row-columns: 6 !default;
Уровни сетки
Выходя за рамки самих колонок, вы также можете настроить количество уровней сетки. Если вам нужно всего четыре уровня сетки, вы обновите $grid-breakpoints и $container-max-widths на что-то вроде этого:
$grid-breakpoints: ( xs: 0, sm: 480px, md: 768px, lg: 1024px ); $container-max-widths: ( sm: 420px, md: 720px, lg: 960px );
При внесении любых изменений в Sass-переменные или карты вам необходимо сохранить изменения и перекомпилировать. Это выведет новый набор предопределенных классов сетки для ширины колонок, отступов и порядка. Адаптивные утилиты видимости также будут обновлены для использования пользовательских точек разрыва. Убедитесь, что значения сетки задаются в px (а не в rem, em или %).
© 2011–2022 Twitter, Inc.
© 2011–2022 The Bootstrap Authors
Code licensed under the MIT License.
Documentation licensed under the Creative Commons Attribution License v3.0.
https://getbootstrap.com/docs/5.3/layout/grid/