Раньше Bootstrap использовал 12-ти колоночную сетку. Теперь используется новый режим flexbox, но основные приёмы работы с сеткой остались с небольшими изменениями.
Режим flexbox позволяет макету автоматически вычислять размер каждой колонки.
<div>
<div>
<div>
Половинка
</div>
<div>
Половинка
</div>
</div>
<div>
<div>
Одна треть
</div>
<div>
Одна треть
</div>
<div>
Одна треть
</div>
</div>
</div>
Половинка
Половинка
Одна треть
Одна треть
Одна треть
Безразмерные колонки в сетке flexbox будут поровну делить доступное пространство, всегда заполняя весь ряд.
Можно указать размер для одной колонки, а остальные колонки равномерно распределят оставшееся пространство между собой. Укажем размер у среднего блока.
Используя классы col-{breakpoint}-auto, можно создать блок, размер которого будет определяться его содержимым. Также для блока можно задать классы горизонтального выравнивания. В этом случае общий ряд будет сжат до необходимых размеров.
<div>
<div>
<div>
1 of 3
</div>
<div>
Слово
</div>
<div>
3 of 3
</div>
</div>
<div>
<div>
1 of 3
</div>
<div>
Два слова
</div>
<div>
3 of 3
</div>
</div>
<div>
<div>
1 of 3
</div>
<div>
Здесь три слова
</div>
<div>
3 of 3
</div>
</div>
</div>
1 of 3
Слово
3 of 3
1 of 3
Два слова
3 of 3
1 of 3
Здесь три слова
3 of 3
Можно оставить стандартное поведение, не сжимая общую ширину.
1 of 3
Два слова
3 of 3
<div>
<div>
<div>
1 of 3
</div>
<div>
Два слова
</div>
<div>
3 of 3
</div>
</div>
</div>
Вы можете использовать опорные точки для точного задания размеров колонок. В остальных случаях можно ограничиться классами col и col-*.
Используя классы col-sm-*, вы можете создать базовую сеточную систему, которая разместит блоки в виде стопки на телефонах, а затем будет выводить блоки в один ряд.
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div>
<div>.col .col-md-8</div>
<div>.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div>
<div>.col-6 .col-md-4</div>
<div>.col-6 .col-md-4</div>
<div>.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div>
<div>.col-6</div>
<div>.col-6</div>
</div>
Вертикальное выравнивание
Flexbox дает два способа вертикального позиционирования колонок.
Выравниваем колонки внутри ряда относительно верха, середины, низа, если позволяет высота. Указываем у row классы flex-items-xs-start, flex-items-xs-center, flex-items-xs-end.
По верху
По верху
По верху
По центру
По центру
По центру
По низу
По низу
По низу
<div>
<div>
<div>
По верху
</div>
<div>
По верху
</div>
<div>
По верху
</div>
</div>
<div>
<div>
По центру
</div>
<div>
По центру
</div>
<div>
По центру
</div>
</div>
<div>
<div>
По низу
</div>
<div>
По низу
</div>
<div>
По низу
</div>
</div>
</div>
Также можно выровнять колонки внутри одного ряда относительно друг друга, если колонки будут использовать классы align-self-start, align-self-center, align-self-end.
One of three columns
One of three columns
One of three columns
<div>
<div>
<div>
One of three columns
</div>
<div>
One of three columns
</div>
<div>
One of three columns
</div>
</div>
</div>
Горизонтальное выравнивание
Создаём блоки, размер которых меньше 12 колонок. Дальше управляем их выравниванием из-за свободного места, указывая у ряда row классы justify-content-start, justify-content-center, justify-content-end. Также обратите внимание на классы justify-content-around
, justify-content-between, которые окружают свободно место.
По левому краю
По левому краю
По центру
По центру
По правому краю
По правому краю
Around
Around
Between
Between
<div>
<div>
<div>
По левому краю
</div>
<div>
По левому краю
</div>
</div>
<div>
<div>
По центру
</div>
<div>
По центру
</div>
</div>
<div>
<div>
По правому краю
</div>
<div>
По правому краю
</div>
</div>
<div>
<div>
Around
</div>
<div>
Around
</div>
</div>
<div>
<div>
Between
</div>
<div>
Between
</div>
</div>
</div>
Промежутки
Используйте класс . no-gutters, чтобы убрать промежутки между блоками. Класс удаляет отрицательные margins из .row и горизонтальные padding из всех дочерних колонок.
.col-12 .col-sm-6 .col-md-8 no-gutters
.col-6 .col-md-4
.col-12 .col-sm-6 .col-md-8
.col-6 .col-md-4
Сортировка колонок
В обычной системе сеток, если нам необходимо поменять порядок колонок, нам нужно использовать push и pull.
Разработчики Bootstrap реализовали встроенное свойство flexbox order на основе трех классов сортировки, которые применим к колонкам col:
.flex-first – отображается первым
.flex-last – отображается последним
.flex-unordered – отображается между первым и последним
Первый, но не первый и не последний
Второй, но последний
Третий, но первый
<div>
<div>
<div>
Первый, но не первый и не последний
</div>
<div>
Второй, но последний
</div>
<div>
Третий, но первый
</div>
</div>
</div>
Смещение колонок
Для сдвига колонок вправо используйте . offset-md-*, которые увеличивают левый отступ на * колонок. Например,
Сеточная система Bootstrap
используется для макета, в частности адаптивных макетов . Понимание того, как это работает, жизненно важно для понимания Bootstrap.
Сетка состоит из групп из строк и столбцов внутри одного или нескольких контейнеров .
Bootstrap Grid можно использовать отдельно, без Bootstrap JavaScript и других компонентов CSS. Вам просто нужно скачать и
ссылка на "bootstrap-grid.css" , который содержит классы Grid и Flexbox. Дополнительная информация только об использовании
Bootstrap Grid CSS находится здесь, в документации.
Базовый пример использования сетки:
<дел>
<дел>
Я ваш контент внутри сетки!
Это дает нам одну большую «колонку» по горизонтали через окно просмотра…
2 столбца…
<дел>
<дел>
Левый столбец
Правый столбец
3 столбца…
<дел>
<дел>
Левый столбец
Средний столбец
Правый столбец
Базовые концепции Grid быстро понятны, но вам может быть интересно, зачем все это
HTML-разметка обязательна. У вас могут возникнуть такие вопросы, как…
Зачем мне Контейнер?
Могу ли я сделать один столбец шире других?
Нужно ли мне использовать ряд?
Я отвечу на вопросы, подобные этим, чуть ниже.
Но сначала я хочу сделать шаг назад, чтобы объяснить кое-что очень важное об использовании сетки.
Понимание «Правил сетки» сэкономит вам много времени и нервов.
Прочтите их внимательно…
1. Столбцы
должны быть непосредственными дочерними элементами строки.
2. Строки
, только используются для столбцов, больше ничего.
3. Строки должны быть размещены внутри Контейнера.
Эти правила очень ВАЖНЫ. Строки и столбцы всегда работают вместе, и у вас никогда не должно быть одного без другого.
Плохие вещи произойдут, если вы не будете в точности следовать этим трем простым правилам сетки. Я ответил на бесчисленное количество вопросов о Bootstrap
на Stack Overflow, просто применяя эти правила. Сначала это может показаться сложным, но это действительно легко, когда вы понимаете, как работает Сеть.
Существует
правильный способ использовать сетку Bootstrap…
В предыдущих примерах вы могли заметить, что я использовал класс .container для переноса .row .
Контейнер — это корневой (он же: верхний уровень, самый внешний) элемент Bootstrap Grid.
<дел>
<дел>
Я доволен сеткой!
Контейнер можно использовать для хранения любых элементов и контента. Он используется не только для
Строки и столбцы сетки. Например, это вполне допустимая разметка Bootstrap:
.
<дел>
Мой заголовок
<дел>
Меня устраивает сетка!
Сначала Контейнер может показаться тривиальным или ненужным, но он очень важен для контроль
ширина макета. Контейнер также используется для равномерного выравнивания левого и правого краев
компоновка в области просмотра браузера.
Bootstrap 4 имеет 2 типа контейнеров. В своих примерах я использовал .container , но есть и
полная ширина .container-fluid . Вы можете использовать любой из них:
1 — Контейнер фиксированной ширины для размещения макета по центру:
<дел> дел>
2 — Полноразмерный контейнер для макета на всю ширину:
<дел> дел>
Контейнер .container уменьшается по ширине (по мере уменьшения ширины экрана), так что в конечном итоге
он становится полноразмерным, как .container-fluid на небольших устройствах.
Примечание. Контейнер может содержать любое содержимое, а не только строки и столбцы сетки. Но если ты
использовать строки и столбцы сетки, строки должны быть размещены внутри контейнера.
Попробуйте демо-контейнер на Codeply
При использовании сетки внутри контейнера будет размещена еще одна строка. Вы можете иметь несколько строк в
Container, и вы можете иметь несколько Containers на одной странице. Все зависит от того, какой макет вы пытаетесь
выполнить, но пока не слишком зацикливайтесь на этом.
Важно, чтобы контейнер использовался для хранения строк сетки (.row).
Строки имеют отрицательное левое/правое поле -15px. Отступ контейнера в 15 пикселей используется для противодействия отрицательным полям строки.
Это делается для того, чтобы содержимое было равномерно выровнено по краям макета. Если вы не поместите строку в контейнер, строка переполнится.
контейнер, вызывающий нежелательную горизонтальную прокрутку.
Обратите внимание, что я сгруппировал «Строки и столбцы» в одном разделе этой статьи. Это потому, что вы не можете иметь его без
другое, как объяснялось ранее в «Правилах сети».
Какое-то время я хотел, чтобы Bootstrap .row на самом деле не назывался «строка».
Название «строка» часто вводит в заблуждение и скрывает истинное назначение .row .
Когда вы думаете «ряд», вы, вероятно, думаете, что горизонтальная линия , это нормально, НО лучше подумать о .row просто как родитель столбцов.
Думайте о строке как о группе столбцов
Это связано с тем, что столбцы внутри строки .row не всегда располагаются горизонтально в области просмотра. Иногда мы хотим, чтобы макет столбца был горизонтальным,
в то время как в других случаях мы хотим, чтобы столбцы располагались вертикально вниз в окне просмотра. Концепция горизонтальной и вертикальной компоновки является сутью
Отзывчивый дизайн. Единственная цель «строки» состоит в том, чтобы содержать 1 или более «столбцов».
НЕ РАЗМЕЩАЙТЕ КОНТЕНТ ПРЯМО ВНУТРИ РЯДА!
Опять же, только цель строки состоит в том, чтобы содержать столбцы.
⛔
<дел>
Это очень плохо, неправильно, нет буэно!!
<дел>
Это тоже очень плохо, неправильно!!
<дел>
И заголовков тоже нет! Это неправильный путь!!
столбца и только столбцов размещаются внутри строки.
✅
<дел>
Счастливый :-) Это правильный путь.
Также важно отметить, что .row — это display:flex . Как дети Flexbox,
Столбцы в каждой строке имеют одинаковую высоту. Из-за Flexbox горизонтальное и вертикальное выравнивание (выравнивание по правому краю, по центру, по нижнему краю и т. д.)
легко выполняется с помощью классов Bootstrap 4 Flex и Auto-margin Utility.
Теперь пришло время более подробно рассмотреть строки и столбцы, а также ровно как они работают вместе.
Существуют разные «типы» столбцов и разные способы их использования в макете. Они волшебные.
Счастье это… Столбцы.
Все возможности Bootstrap 4 Columns…
Создание горизонтальных делений в окне просмотра.
Может иметь различную заданную ширину.
Может изменяться по ширине при разной ширине экрана.
Расположение горизонтально слева направо, затем вертикально вверх и вниз.
Может изменить положение (переупорядочить) относительно братьев и сестер в той же строке.
одного роста со своими братьями и сестрами в том же ряду.
Может «расти» или «сжиматься» в ширину.
Может автоматически «заворачиваться» или «складываться» по вертикали по мере необходимости или с разной шириной.
Может содержать больше строк и столбцов__, это называется «вложением».
Все, что вам нужно знать о столбцах Bootstrap…
Столбцы создают горизонтальные деления в окне просмотра.
Пространство между колоннами называется «желобом».
Классическая сетка Bootstrap состоит из 12 столбцов:
Примечание для чайников: Колонки на самом деле не светло-розовые. Это используется только для того, чтобы вы могли видеть левую/правую границы столбцов.
В большинстве случаев вы не собираетесь использовать все 12 отдельных столбцов, как показано выше. Вместо этого вы будете использовать некоторые
комбинация 12, чтобы содержать содержимое страницы…
Таким образом, столбцы можно равномерно разделить на множители по 12. Например, 6 столбцов (12/6 = 2):
А посчитать можно…
Столбцы можно разделить, используя любую часть из 12 блоков. И можно использовать меньше, чем 12 . Также можно использовать больше, чем 12 , что я покажу вам позже.
При всей этой гибкости возможности компоновки кажутся безграничными…
Но сетка не всегда около 12. Благодаря Flexbox,
Bootstrap 4 имеет новые столбцы «Auto-layout».
Эти безразмерные столбцы обеспечивают еще большую гибкость при разработке макетов.
Теперь вы знаете, как использовать столбцы для создания горизонтального макета. Но подождите… это еще не все! Давайте поговорим о некоторых более причудливых вещах, которые могут делать столбцы.
Как вы видели ранее, столбцы могут быть разной ширины:
Знаете ли вы, что ширина столбца может измениться на в зависимости от ширины экрана ?
Это называется Адаптивный дизайн , и я очень скоро расскажу вам, как именно это работает.
Но обо всем по порядку, мне нужно закончить рассказывать вам о Columns. Помните раньше, когда я сказал
» Можно ли использовать более 12 столбцов подряд «?
Столбцы в одной и той же строке располагаются горизонтально по горизонтали, а затем складываются вертикально вниз. Эта вертикальная «укладка» или «обертка»
происходит, когда количество единиц столбца в одной строке превышает 12. Это известно как «обтекание столбцов»…
Столбцы в одной строке переносятся на следующую строку каждые 12 единиц:
Шириной столбца и «обтеканием» можно управлять с помощью различных уровней отзывчивой сетки (также известных как «точки останова сетки»):
Столбцы могут изменять положение (переупорядочивать) относительно одноуровневых столбцов в той же строке:
Столбцы могут содержать дочерние строки и столбцы. Это называется «вложением»:
Столбцы могут «расти» или «сжиматься» по ширине. Это столбцы с автоматическим макетом:
Теперь, когда вы понимаете основы использования Grid-системы Bootstrap, далее я покажу вам, что
sm , -md , -lg и -xl среднее. Я объясню больше
о том, как использовать сетку для адаптивного дизайна .
Bootstrap Grid: изучение самых полезных свойств Flexbox
В этой статье я познакомлю вас с ключевыми CSS-классами Bootstrap для создания макетов с помощью системы сетки Bootstrap.
Bootstrap 4 использует Flexbox в качестве основы для своей системы сетки. Я объясню свойства CSS Flexbox, лежащие в основе функциональности новой сетки, и определю, как работают служебные классы гибкости Bootstrap, чтобы помочь вам быстро и безболезненно создавать потрясающие макеты.
Что такое Flexbox?
Давайте сначала представим Flexbox. Это расшифровывается как flex ible box и представляет собой передовую систему компоновки CSS, которая позволяет легко создавать макеты для динамических или неизвестных размеров экрана. (Флекс-контейнер имеет возможность настраивать и контролировать размер своих дочерних элементов для адаптации к различным окнам просмотра. )
Вы можете легко создать макет Flexbox, используя набор свойств CSS, предназначенных для этой задачи.
Bootstrap еще больше упрощает создание макетов на основе Flexbox, предоставляя набор классов-оболочек поверх свойств Flexbox, которые можно просто применить к разметке для достижения желаемого результата.
Знакомство с системой сеток Bootstrap
Системы сеток являются важным элементом инфраструктуры CSS, поскольку создание сложных макетов без мощной и гибкой системы сеток может быть пугающей задачей.
Среди новых функций последней системы сетки Bootstrap вы найдете точку останова сетки xl (очень большая), соответствующую очень большому размеру экрана, и использование Flexbox вместо плавающих элементов в качестве основного механизма компоновки.
Ключевые классы системы Bootstrap Grid
Вы можете создать макет, используя систему сетки Bootstrap, применив несколько классов Bootstrap: .container , . row и .col-*-* . (Первый * в .col-*-* необходимо заменить спецификатором точки останова, например, xs, sm, md, lg, xl , а второй * необходимо заполнить размером диапазона столбца. Сумма всех столбцов должна быть равна 12.)
Давайте теперь посмотрим на основные компоненты сетки Bootstrap.
Контейнер
Контейнер — это внешняя оболочка макета сетки. Это div , который имеет класс .container для фиксированной ширины или .container-fluid для полной ширины 100% .
Строка
Строка служит логическим контейнером для столбцов.
Столбец
Столбец — это то, что образует блок в сетке. Он должен содержаться в строке.
Система сетки Bootstrap предоставляет следующие дополнительные классы столбцов:
.col-xs-* : предназначен для очень маленьких экранов шириной менее 576 пикселей
. col-sm-* : предназначен для небольших экранов с шириной равной или большей 576px
.col-md-* : предназначен для средних экранов с шириной >= 768px
.col-lg-* : предназначен для больших экранов с шириной >= 992px
.col-xl-* : предназначен для очень больших экранов, ширина которых равна или превышает 9.0005 1200px .
Вам не нужно добавлять несколько классов, если вы хотите указать одинаковую ширину для разных размеров экрана; просто добавьте класс с наименьшей точкой останова. Так, например, вместо .col-sm-6 и .col-md-6 нужно применить только .col-sm-6 .
Макеты Bootstrap Grid с Flexbox и Floats
Благодаря Flexbox вы можете легко добиться таких вещей, как столбцы одинаковой высоты или одинаковой ширины, которые раньше можно было сделать только с помощью CSS-хаков.
CSS float и clearfix методы создания макетов были среди таких хаков, которые затрудняли создание и отладку сложных макетов.
Например, рассмотрим двухколоночный макет. Если вы создадите этот макет с помощью Bootstrap 3, он будет выглядеть так:
См. 2-колоночный макет Pen Bootstrap 3 от SitePoint (@SitePoint) на CodePen.
Если вы создадите тот же макет с помощью Bootstrap 4, у вас будет следующее:
См. двухколоночный макет Pen Bootstrap 4 от SitePoint (@SitePoint) на CodePen.
С помощью Bootstrap 4 и его сетки на основе flexbox вы получаете более реалистичный столбец (как в таблице), так как столбцы в одной строке будут иметь одинаковую высоту.
Давайте займемся макетами столбцов одинаковой ширины. Благодаря Flexbox вы можете легко разделить доступное пространство между несколькими столбцами в одной строке. Если вы создаете макет сетки с несколькими столбцами без указания ширины столбца (т. е. с использованием классов .col-* ), доступное пространство будет автоматически и поровну разделено между этими столбцами.
Вот простой и быстрый пример:
<дел>
.col
<дел>
.col
<дел>
.col
<дел>
.col
Каждый из четырех экземпляров .col-sm автоматически будет иметь ширину 25% , начиная с малой точки останова и выше.
Вот что вы получите с минимальным стилем:
Flexbox с автоматическими полями
Сочетание Flexbox с автоматическими полями приводит к некоторым интересным трюкам.
Например, посмотрите на макет выше: вы можете расположить элементы справа от элемента, добавив к элементу класс Bootstrap .mr-auto , который означает margin-right: auto; в обычном CSS, или расположите некоторые элементы слева от указанного элемента с помощью класса Bootstrap . ml-auto ( margin-left: auto; в обычном CSS). Вы можете видеть это как перемещение предмета с помощью .mr-auto или .ml-auto в крайнее правое или крайнее левое положение соответственно, а остальные элементы в противоположном направлении.
См. Pen Bootstrap 4 Flexbox с приемами автоматического определения полей от SitePoint (@SitePoint) на CodePen.
Вы можете получить этот результат либо по горизонтали, либо по вертикали. Чтобы добиться такого же поведения при перемещении гибких элементов вверх или вниз (а не вправо или влево), вам нужно использовать mb-auto ( нижняя граница: авто; ) и mt-auto ( margin-top: auto; ), установите flex-direction на столбец и примените класс align-items-(start|end) .
См. Pen Bootstrap 4 Flexbox с приемами автоматического определения полей от SitePoint (@SitePoint) на CodePen.
Полезные концепции Flexbox для работы с служебными классами Bootstrap Flex
Bootstrap 4 использует специальные служебные классы flex, которые могут показаться несколько эзотерическими для тех, кто никогда не слышал о Flexbox или не знает, как ведут себя flex-контейнеры и flex-элементы.
Например, Bootstrap теперь применяет свойство display:flex к своим элементам контейнера сетки. Кроме того, Bootstrap позволяет превратить любой контейнер HTML в контейнер flex, просто применив класс .d-flex к выбранному элементу.
Существуют также адаптивные классы, такие как .d-sm-flex и .d-md-flex и т. д.
Однако, если вы не знаете, что такое flex-контейнер и как он влияет на его дочерние элементы, использование служебных классов Bootstrap flex может быть немного проблематичным. То же самое можно сказать и обо всех других гибких утилитах, таких как 9.0013 .flex-row , .flex-row-reverse , .flex-column и .flex-column-reverse .
Давайте кратко рассмотрим, как работает Flexbox. Скорее всего, вы найдете это полезным при работе с служебными классами Bootstrap flex.
Контейнеры Flex
Flexbox определяет контейнер flex, применяя свойство display со значениями flex или inline-flex :
.mycontainer {
дисплей: гибкий;
}
Вспомогательный класс Bootstrap flex для создания гибкого контейнера — d-flex .
Flex-элементы
Каждый прямых дочерних элементов flex-контейнера превращается во flex-элемент.
Вы можете определить направление flex-элементов, используя CSS-свойство flex-direction с одним из следующих значений: row , row-reverse , column и column-reverse .
строка задает горизонтальное направление слева направо
row-reverse устанавливает горизонтальное направление справа налево
столбец задает вертикальное направление сверху вниз
column-reverse устанавливает вертикальное направление снизу вверх.
Bootstrap использует классы flex-row , flex-row-reverse , flex-column и flex-column-reverse для определения направления flex-элементов.
Кроме того, Flexbox позволяет вам явно изменить визуальный порядок определенных flex-элементов с помощью свойства order , которое по умолчанию равно нулю:
.item {
порядок: 1;
}
Bootstrap предлагает свои собственные служебные классы порядка для создания гибкого элемента первым, последним или для сброса свойства порядка к порядку DOM по умолчанию. Например, чтобы flex-элемент отображался первым по отношению к своим одноуровневым элементам, добавьте в разметку order-1 .
Выравнивание элементов Flex
Flexbox позволяет быстро и легко выравнивать гибкие элементы любым удобным для вас способом.
Например, свойство justify-content в flex-контейнере позволяет выравнивать flex-элементы по главной оси (ось x по умолчанию, которую вы можете изменить, установив flex-direction на столбец ) . Доступные значения:
flex-start : это начальное значение, и оно будет выстраивать элементы в начале контейнера
.
гибкий конец выравнивает элементы по концу родительского элемента
center выравнивает элементы по центру контейнера
space-between создает пространство между flex-элементами после их размещения
space-around создает равное пространство справа и слева от каждого гибкого элемента.
Вспомогательные классы Bootstrap для применения значений justify-content к элементам:
justify-content-start
выравнивание-конец содержания
выравнивание-контент-центр
выравнивание содержимого между
выравнивание содержимого вокруг
Свойство Flexbox align-items позволяет изменять выравнивание flex-элементов по поперечной оси. (Если вы установите главную ось горизонтальной, поперечная ось будет вертикальной, и наоборот.)
Возможные значения для align-items :
stretch : это начальное значение, которое заставляет flex-элементы растягиваться до высоты их самых высоких родственных элементов
.
flex-start выравнивает элементы в начале flex-контейнера
flex-end выравнивает элементы в конце гибкого контейнера
center отвечает за центрирование гибкого элемента внутри его контейнера.
Вы можете быстро применить это поведение со следующими классами Bootstrap:
выровнять-элементы-растянуть
начало выравнивания элементов
выровнять элементы-конец
выравнивание элементов по центру
Ознакомьтесь с кодом в этой ручке, чтобы увидеть пример применения служебных классов Bootstrap flex: