Bootstrap неплохо зарекомендовал себя как удобный, расширяемый CSS каркас для быстрого создания адаптивных макетов. Миллионы сайтов успешно используют этот фреймворк в средних, малых и крупных проектах. Bootstrap важен тем, что имеет поддержку всех современных браузеров и дает более удобную, управляемую и гибкую систему для разработчиков, нежели классическая модель разметки без использования фреймворка.
Дополнительные материалы урока Bootstrap
- Все примеры урока вы можете потестировать самостоятельно: Скачать
- Ознакомиться с документацией Bootstrap можно на сайте Bootstrap
- Последняя версия стартера с Bootstrap: OptimizedHTML 5
![Bootstrap - Can I Use](img/blog/html-css/bootstrap/1-0-flexbox-caniuse.jpg)
Сегодня мы подробно разберем работу с сеткой Bootstrap, по ходу дела сравнивая ее со старой версией. Данный урок будет полезен вам не только если вы новичок и знакомитесь с Bootstrap, но и в том случае, если вы опытный разработчик и хотите изучить все правила и нюансы верстки с использованием сетки Bootstrap и Flexbox инструментов, входящих в ее состав.
1. Основные параметры сетки по умолчанию
По умолчанию сетка Bootstrap очень похожа на сетку третьей версии, однако появились некоторые важные отличия.
![Bootstrap - Options](img/blog/html-css/bootstrap/1-1-grid-options.jpg)
Из таблицы основных опций мы можем заметить явные отличия от сетки третьей версии. Теперь отсутствует префикс класса «.col-xs-», отвечающий за самые маленькие разрешения, вместо него указывается упрощенный префикс «.col-». Можно ошибочно подумать, что префикс «.col-» отвечает за минимальные разрешения мобильных устройств, однако это не совсем так. Помимо всего прочего, префикс «.col-» - это одно из важнейших новшеств Bootstrap. Это класс, который отвечает за автоматическую разметку колонок на любом разрешении. Но об этом позже.
За малые разрешения (small) отвечает префикс «.col-sm-» с медиа-запросом от 576 пикс. Ширина контейнера составляет 540 пикс. Средние разрешения отрабатываются от 768 пикс. Ширина контейнера - 720 пикс. Большие разрешения работают с разрешения устройств от 992 пикс. Ширина контейнера - 960 пикс. И самые большие - от 1200 пикс. Ширина контейнера фиксируется на значении 1140 пикс.
Обратите внимание, что максимальные значения медиа-запросов имеют неточные значения с дробной частью «.98» в пикселях. Это заметно при выборе Desktop First метода верстки, где максимальная ширина медиа-запроса ограничена. Например, при компиляции Sass «+media-breakpoint-down(lg)» мы получим «@media (max-width: 1199.98px)». Здесь 0.02 пикселя освобождаются для старта следующего медиа-запроса. Имейте это ввиду. В следующих выпусках «Джедай верстки 8» мы рассмотрим этот и множество других моментов из этого урока на реальном примере.
2. Автоматическая разметка колонок
2.1 Колонки одинаковой ширины
С помощью нового универсального класса «.col» можно указать до 12 колонок в ряду (родитель «.row»), ширина которых будет автоматически вычислена в зависимости от количества элементов и будет равна.
Например:
![Bootstrap - Колонки одинаковой ширины](img/blog/html-css/bootstrap/2-1-kolonki-odinakovoy-shiriny.jpg)
2.2 Установка ширины одной колонки
Вы также можете явно установить ширину одной колонки, а остальные оставить автоматическими.
<div class="row"> <div class="col">1 из 3</div> <div class="col-6">2 из 3 (широкое)</div> <div class="col">3 из 3</div> </div> <div class="row"> <div class="col">1 из 3</div> <div class="col-5">2 из 3 (широкое)</div> <div class="col">3 из 3</div> </div>
![Bootstrap - Установка ширины одной колонки](img/blog/html-css/bootstrap/2-2-ustanovka-shiriny-odnoy-kolonki.jpg)
В данном примере второй элемент в третьем ряду имеет класс «.col-6» и второй элемент во втором ряду имеет класс «.col-5», которые занимают соответствующее количество колонок на всех разрешениях экрана. Ширина остальных колонок является отзывчивой и вычисляется автоматически, занимая все оставшееся пространство.
2.3 Контент переменной ширины
Можно использовать класс «col-{breakpoint}-auto», чтобы определить контент с переменной шириной, в зависимости от занимаемого пространства содержимым колонки. Где breakpoint - размер экрана (xl, lg, md или sm).
<div class="row justify-content-sm-center"> <div class="col col-md-2">1 из 3</div> <div class="col-sm-auto">Контент переменной ширины</div> <div class="col col-md-2">3 из 3</div> </div> <div class="row"> <div class="col">1 из 3</div> <div class="col-sm-auto">Контент переменной ширины номер два</div> <div class="col col-md-2">3 из 3</div> </div>
![Bootstrap - Контент переменной ширины](img/blog/html-css/bootstrap/2-3-kontent-peremennoy-shiriny.jpg)
Здесь мы видим, что две центральные колонки занимают ширину, соответствующую ширине содержимого, однако в первом ряду благодаря классу «.justify-content-sm-center» у «.row» весь ряд центрируется и общая ширина зависит только от ширины центральной колонки, в то время, как второй ряд растягивается на всю доступную ширину, но вторая колонка остается фиксированной по ширине содержимого.
2.4 Мульти-ряд
Благодаря Bootstrap вы можете сделать в одном ряду несколько строк (переносов). Реализовать это можно с помощью класса «.w-100», который очень похож на тег «br» и по-сути просто делает перенос колонок на новую строку.
<div class="row"> <div class="col">col</div> <div class="col">col</div> <div class="w-100"></div> <div class="col">col</div> <div class="col">col</div> <div class="col">col</div> </div>
![Bootstrap - Мульти-ряд](img/blog/html-css/bootstrap/2-4-multi-ryad.jpg)
Обратите внимание, что данный класс является частью дополнительных возможностей Bootstrap, которые подключаются к проекту отдельно в случае использования Sass версии проекта Bootstrap и находятся в папке «scss/utilities». Вы также можете подключить другие плагины из этой папки к вашему проекту по необходимости.
3. Адаптивные классы
3.1 Брейкпоинты
Очень интересная возможность Bootstrap - возможность задавать универсальные колонки, которые будут отображаться на всех разрешениях. Это упомянутый ранее класс «.col». Кроме того, можно определить класс, указывающий конкретное количество колонок, занимаемое содержимым - это классы с префиксом «.col-{число колонок}», например «.col-6» говорит нам о том, что содержимое займет 6 колонок из 12. В случае, когда конкретное количество задавать не обязательно, можно смело использовать универсальный класс «.col».
<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>
![Bootstrap - Брейкпоинты](img/blog/html-css/bootstrap/3-1-breakpoints.jpg)
3.2 На мобильных устройствах
Вы можете использовать префикс класса «.col-sm-{количество занимаемых колонок}» для того, чтобы задать базовую сетку на всех разрешениях, кроме самых маленьких. На небольших экранах колонки такой сетки будут складываться друг под друга. На разрешениях больше - будут занимать столько места, сколько вы определили в классах.
<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>
![Bootstrap - На мобильных устройствах](img/blog/html-css/bootstrap/3-2-na-mobilnyh.jpg)
Здесь мы видим, что первый ряд на устройствах с разрешением более «sm», то-есть больше, чем 576 пикс. разбивается на 2 колонки - шириной 8 и 4 из 12-ти соответственно. Ширина колонок во втором ряду вычисляется автоматически, но на самых малых разрешениях эти колонки также складываются друг под друга, благодаря классу «.col-sm».
3.3 Создание сложной комбинированной сетки
С помощью Bootstrap вы можете создавать любые комбинации колонок при создании сетки. Для каждой колонки можно задать любое поведение на различных разрешениях с помощью адаптивных классов. Здесь отличия от третьей версии - только в наименованиях классов.
<!-- На мобильных устройствах: Первая колонка - на полную ширину, вторая на половину --> <div class="row"> <div class="col-12 col-md-8">.col-12 .col-md-8</div> <div class="col-6 col-md-4">.col-6 .col-md-4</div> </div> <!-- На десктопе: 3 колонки по 4 в каждой. На мобильных: все колонки вполовину контейнера --> <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> <!-- Колонки занимают 6 из 12 колонок на любом разрешении --> <div class="row"> <div class="col-6">.col-6</div> <div class="col-6">.col-6</div> </div>
![Bootstrap - Создание сложной комбинированной сетки](img/blog/html-css/bootstrap/3-3-sozdaniye-slozhnoy-setki-na-bootstrap.jpg)
4. Выравнивание
Bootstrap основан на «флексах» и дарит нам все возможности данной модели, которые доступны в простых готовых классах. В числе возможностей - вертикальное и горизонтальное выравнивание.
4.1 Вертикальное выравнивание
<div class="row align-items-start"> <div class="col">Верх</div> <div class="col">Верх</div> <div class="col">Верх</div> </div> <div class="row align-items-center"> <div class="col">Середина</div> <div class="col">Середина</div> <div class="col">Середина</div> </div> <div class="row align-items-end"> <div class="col">Низ</div> <div class="col">Низ</div> <div class="col">Низ</div> </div>
![Bootstrap - Вертикальное выравнивание](img/blog/html-css/bootstrap/4-1-0-bootstrap-4-vertikalnoye-vyravnivaniye.jpg)
Помимо управления выравниванием через родительский «.row», можно выравнивать колонки, задавая им соответствующие классы:
<div class="row"> <div class="col align-self-start">Верх</div> <div class="col align-self-center">Середина</div> <div class="col align-self-end">Низ</div> </div>
![Bootstrap - Вертикальное выравнивание у колонок](img/blog/html-css/bootstrap/4-1-1-bootstrap-4-vertikalnoye-vyravnivaniye-2.jpg)
4.2 Горизонтальное выравнивание
Кроме того, Bootstrap имеет в своем арсенале инструменты для горизонтального выравнивания колонок при помощи префикса «.justify-content-» у «.row».
<div class="row justify-content-start"> <div class="col-4">row justify-content-start</div> <div class="col-4">row justify-content-start</div> </div> <div class="row justify-content-center"> <div class="col-4">row justify-content-center</div> <div class="col-4">row justify-content-center</div> </div> <div class="row justify-content-end"> <div class="col-4">justify-content-end</div> <div class="col-4">justify-content-end</div> </div> <div class="row justify-content-around"> <div class="col-4">justify-content-around</div> <div class="col-4">justify-content-around</div> </div> <div class="row justify-content-between"> <div class="col-4">justify-content-between</div> <div class="col-4">justify-content-between</div> </div>
![Bootstrap - Горизонтальное выравнивание](img/blog/html-css/bootstrap/4-2-bootstrap-4-gorizontalnoye-viravnivaniye.jpg)
4.3 Удаление полей между колонками
Очень часто встречаются ситуации, когда необходимо убрать поля между колонками. Например, если вы создаете галерею и элементы должны быть расположены вплотную, например так:
![Bootstrap - Удаление полей между колонками - no-gutters](img/blog/html-css/bootstrap/4-3-0-primer-no-gutters.jpg)
Для этого достаточно у элемента «.row» задать дополнительный класс «.no-gutters».
<div class="row no-gutters"> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> <div class="col-6 col-sm-4 col-md-4"><div>col-6 col-sm-4 col-md-4</div></div> </div>
![Bootstrap - Удаление полей между колонками - пример](img/blog/html-css/bootstrap/4-3-1-udaleniye-poley-mezhdu-kolonkami.jpg)
4.4 Перенос колонок на новую строку
Если ряд (.row) заполняется суммарным количеством колонок более 12-ти, последующая колонка переносится на новую строку.
<div class="row"> <div class="col-9">.col-9</div> <div class="col-4">.col-4<br>9 + 4 = 13 колонок - это больше 12. Данный элемент шириной в 4 колонки будет перенесен на новую строку.</div> <div class="col-6">.col-6<br>Следующие колонки расположатся вдоль строки.</div> </div>
![Bootstrap - Перенос колонок на новую строку](img/blog/html-css/bootstrap/4-4-perenos-kolonok.jpg)
Здесь все также, как в 3-й версии Bootstrap.
5. Порядок элементов
5.1 Классы порядка элементов
Можно использовать специальные классы с префиксом «.order-» для определения порядка элементов. Если вы знакомы с Flex-версткой, данные правила будут вам знакомы. Bootstrap дает возможность задавать порядок элементов с помощью классов. Можно задавать порядок напрямую (.order-1.order-md-2):
<div class="row"> <div class="col">Первый неупорядоченный элемент</div> <div class="col order-12">Второй, упорядоченный как последний</div> <div class="col order-1">Третий, упорядоченный как первый</div> </div>
![Bootstrap - Классы порядка элементов](img/blog/html-css/bootstrap/5-1-0-reordering.jpg)
Или можно использовать специальные классы, которые определяют порядок первого и последнего элементов (.order-first, .order-last):
<div class="row"> <div class="col">Первый неупорядоченный</div> <div class="col order-last">Второй, упорядоченный как последний</div> <div class="col order-first">Третий, упорядоченный как первый</div> </div>
![Bootstrap - Порядок колонок](img/blog/html-css/bootstrap/5-1-1-reordering-2.jpg)
5.2 Смещение колонок
По аналогии с Bootstrap 3, в 4-й версии также есть возможность горизонтального смещения колонок, однако реализовано это несколько иначе и для этого есть специальные классы с префиксом «.offset-».
5.2.1 Классы смещения
Сдвигать колонку вправо можно, используя классы «.offset-md-*», которые увеличивают левый отступ на * количество элементов. Из примера ниже, класс «.offset-md-2» сдвинет колонку «.col-md-4» на 2 колонки вправо, остальные примеры работают по аналогии:
<div class="row"> <div class="col-md-4">.col-md-4</div> <div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div> </div> <div class="row"> <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div> <div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div> </div> <div class="row"> <div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div> </div>
![Bootstrap - Классы смещения](img/blog/html-css/bootstrap/5-2-1-offset.jpg)
Можно сбрасывать отступ на всех разрешениях благодаря классу «.offset-*-0», где * - это sm, md, lg или xl.
6. Вложенность
Весьма ожидаемо, что Bootstrap поддерживает вложенность элементов. Работает здесь все также, как в третьей версии - чтобы вложить колонки в другие, необходимо создать дочерний класс «.row» и уже в него вкладывать колонки.
<div class="row"> <div class="col-sm-9">Уровень 1: «.col-sm-9» <div class="row"> <div class="col-8 col-sm-6">Уровень 2: «.col-8 .col-sm-6»</div> <div class="col-4 col-sm-6">Уровень 2: «.col-4 .col-sm-6»</div> </div> </div> </div>
![Bootstrap - Вложенность](img/blog/html-css/bootstrap/6-vlozhennost.jpg)
Мы рассмотрели основные особенности работы с сеткой Bootstrap. Если у вас есть желание более подробно ознакомиться со всеми возможностями фреймворка, рекомендую изучить документацию на официальном сайте.
В следующем уроке мы рассмотрим настройку Bootstrap сетки под ваш конкретный проект на примере использования в стартовом шаблоне OptimizedHTML 4. А именно настройку, работу с переменными отступов, брейкпоинтов, количества колонок и прочего.
Премиум уроки от WebDesign Master
Другие уроки по теме «Верстка»
- Создание красивого сайта с анимацией заголовка | Материалы урока
- Создание сайта с красивой анимацией фона | Материалы урока
- Создание красивого сайта с 3D эффектом при скролле | Материалы урока
- Создание красивого сайта с 3D анимацией волны | Материалы урока
- Создание красивого сайта с 3D эффектом Parallax | Материалы урока
- Создание сайта с крутой анимацией скролла (GSAP) | Материалы урока