Bootstrap 4. Flexbox
Раньше Bootstrap использовал 12-ти колоночную сетку. Теперь используется новый режим flexbox, но основные приёмы работы с сеткой остались с небольшими изменениями.
Режим flexbox позволяет макету автоматически вычислять размер каждой колонки.
<div> <div> <div> Половинка </div> <div> Половинка </div> </div> <div> <div> Одна треть </div> <div> Одна треть </div> <div> Одна треть </div> </div> </div>
Половинка
Половинка
Одна треть
Одна треть
Одна треть
Безразмерные колонки в сетке flexbox будут поровну делить доступное пространство, всегда заполняя весь ряд.
Можно указать размер для одной колонки, а остальные колонки равномерно распределят оставшееся пространство между собой. Укажем размер у среднего блока.
<div> <div> <div> (12 - 6) / 2 = 3 </div> <div> 6 колонок </div> <div> (12 - 6) / 2 = 3 </div> </div> <div> <div> </div> <div> 5 колонок </div> <div> </div> </div> <div> <div> </div> <div> 4 колонки </div> <div> </div> </div> </div>
(12 — 6) / 2 = 3
6 колонок
(12 — 6) / 2 = 3
5 колонок
4 колонки
Используя классы 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
col
col
col
col-8
col-4
<div> <div>col</div> <div>col</div> <div>col</div> <div>col</div> </div> <div> <div>col-8</div> <div>col-4</div> </div>
Из стопки в ряд
Используя классы col-sm-*, вы можете создать базовую сеточную систему, которая разместит блоки в виде стопки на телефонах, а затем будет выводить блоки в один ряд.
col-sm-8
col-sm-4
col-sm
col-sm
col-sm
<div> <div>col-sm-8</div> <div>col-sm-4</div> </div> <div> <div>col-sm</div> <div>col-sm</div> <div>col-sm</div> </div>
Смешиваем все классы
Можете комбинировать все классы, как вам нужно.
.col .col-md-8
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6 .col-md-4
.col-6
.col-6
<!-- 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
По левому краю
По левому краю
По центру
По центру
По правому краю
По правому краю
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-*, которые увеличивают левый отступ на * колонок. Например, .offset-md-4 сдвигает на четыре колонки.
.col-md-4
.col-md-4 .offset-md-4
.col-md-3 .offset-md-3
.col-md-3 .offset-md-3
.col-md-6 .offset-md-3
<div> <div> <div>.col-md-4</div> <div>.col-md-4 .offset-md-4</div> </div> <div> <div>.col-md-3 .offset-md-3</div> <div>.col-md-3 .offset-md-3</div> </div> <div> <div>.col-md-6 .offset-md-3</div> </div> </div>
Реклама
Метка: div | WordPress.org Русский
Перейти к содержимомуПерейти к содержимому
- Почему на прилепляется Div
Начато: zgd41
- 1
- 1
- 10 месяцев, 3 недели назад
zgd41
- Добавление блоков div в редактор Gutenberg
Начато: prototip76
- 2
- 1
- 2 года, 5 месяцев назад
Yuri
- Обернуть h3 в статье в div
Начато: Asome
- 3
- 5
- 2 года, 10 месяцев назад
Otshelnik-Fm
- Как сделать, чтобы блоки перемещались на маленьком экране?
Начато: aline18
- 3
- 6
- 4 года, 9 месяцев назад
anonymized-14765447
- Пофиксить размер слайдера
Начато: kachi88
- 2
- 4
- 5 лет, 1 месяц назад
kachi88
- Прижать div элемент к правому краю
Начато: kachi88
- 2
- 2
- 5 лет, 1 месяц назад
kachi88
Начато: madwastefield
- 4
- 26
- 5 лет, 4 месяца назад
madwastefield
- Изменить код HTML (добавить блок)
Начато: yakut87
- 2
- 1
- 6 лет, 11 месяцев назад
1596754as98
- Как правильно разместить элементы в div?
Начато: Zakonoposlushniy
- 1
- 0
- 6 лет, 11 месяцев назад
Zakonoposlushniy
- Заменить checkbox на select
Начато: surprise777
- 2
- 1
- 7 лет назад
makprg
- Выделение текста через div
Начато: Dima
- 2
- 5
- 7 лет назад
Dima
- woocommerce шаблон генерирует два помогите найти
Начато: Kirill Kulakov
- 1
- 1
- 7 лет, 10 месяцев назад
Kirill Kulakov
- как спрятать блок кроме подробной новости?
Начато: amwebo
- 3
- 7
- 8 лет назад
amwebo
- Фон блока, 404 ошибка
Начато: alexangeras
- 1
- 0
- 8 лет, 3 месяца назад
alexangeras
- Открытие блока в регистрации
Начато: professorsda
- 1
- 0
- 10 лет, 7 месяцев назад
professorsda
- div clear both между виджетами
Начато: Peacemaster
- 2
- 2
- 11 лет, 7 месяцев назад
Peacemaster
- Почему opacity наследуется и как это утранить
Начато: sashamori
- 3
- 3
- 11 лет, 11 месяцев назад
Jeny Elkind
- Расположение блока менюшки
Начато: bublick
- 3
- 4
- 11 лет, 11 месяцев назад
bublick
- Добавление элемента(div) вокруг текста поста.
Начато: 2_k
- 3
- 12
- 12 лет, 7 месяцев назад
2_k
- Почему на прилепляется Div
css — Разместите контейнер div с правой стороны
Я хочу разработать какую-нибудь служебную панель. Я могу расположить каждый элемент на этой панели рядом, используя float:left;
Но я хочу, чтобы второй элемент располагался в самом правом углу панели. Это сложно для меня, потому что ширина полосы не статична.
Взгляните на мою демонстрацию: http://jsfiddle.net/x5vyC/2/
Это должно выглядеть так:
Есть идеи, как добиться этого с помощью CSS?
0
Это то, что вы хотели? — http://jsfiddle.net/jomanlk/x5vyC/3/
Теперь плавает с обеих сторон
#wrapper{ фон:красный; переполнение:авто; } # с1 { плыть налево; фон:синий; } # с2 { фон:зеленый; поплавок: справа; } <дел>кон1con2
2
Просто хочу обновить это для начинающих, теперь вам определенно следует использовать flexbox для этого, это более уместно и работает для отзывчивости, попробуйте это: http://jsfiddle. net/x5vyC/3957/
#wrapper{ дисплей: гибкий; выровнять содержание:пробел между; фон:красный; } # с1 { фон:синий; } # с2 { фон:зеленый; } <дел>кон1con2