Bootstrap 3 фиксированная ширина. Блочная система · Bootstrap на русском. Контейнер с фиксированной шириной

Основная разработка сайта для верстальщика начинается с правильного построения сетки сайта. Если вы используете Bootstrap 3, то понимание сетки фреймворка крайне необходимо. В этой небольшой заметки я постараюсь рассмотреть основные нюансы при использовании сетки от Bootstrap . В статья в основном дан перевод документации к Bootstrap Grid , но также приведены некоторые мои дополнения.

Контейнер-обертка

Bootstrap требуется охватывающий элемент, чтобы обернуть контент сайта и стать домом для нашей сеточной системы. Для своего проекта вы можете использовать один из двух вариантов.

Используйте.container для отзывчивого с фиксированной шириной контейнера (максимальная ширина блока 1170px).

Используйте.container-fluid для контейнера с шириной на всю область просмотра.

Система сетки

Bootstrap включает отзывчивую, изначально ориентированную на мобильные устройства сетку, которая масштабируется, начиная с 12 столбцов как на устройствах или при изменении окна просмотра. Она включает предопределенные классы для простой настройки разметки, а также мощные примеси для генерации более семантической разметки .

Итак подходим к сути.

Сетки используют для построения макетов страниц посредством компоновки строк и колонок, которые содержат контент.

Основы работы сетки Bootstrap:

  • Row (строки) должны быть расположены внутри.container (fix) или.container-fluid (full-width) для правильного выравнивания и padding (отступов – рассмотрим ниже чуть более подробно).
  • Используйте rows (строки), чтобы создать горизонтальную группу колонок.
  • Контент должен быть расположен внутри колонок, и только колонки могут быть первыми дочерними элементами rows (строки).
  • Предопределенные классы сетки, например, такие как.row и.col-xs-4 , позволяют быстро создать макет сетки.
  • Колонки создают промежутки (зазоры между контентом колонок) посредством padding (отступов). Этот отступ смещается в строках для первой и последней колонки посредством отрицательного поля у элемента.row . Дополнение : более подробно об использовании отрицательных полей вы можете узнать , а если вкратце: так как у статичного элемента.row не задана ширина, то элемент.row будет вытолкнут по направлению left/right с увеличением ширины элемента.
  • Именно из-за смещения контент внутри сетки ниже выровнялся на одной линии с контентом не-сетки (речь очевидно о контенте статьи - http://getbootstrap.com/css/#grid).
  • Колонки сетки создаются при помощи указания одного номера из двенадцати возможных для колонок, которые вы хотите создать. Например, для построения трех равнозначных колонок достаточно использовать.col-xs-4 .
  • Если более чем 12 колонок расположены внутри одной строки, то каждая группа дополнительных колонок должна быть обернута новой строкой.
  • Классы сетки подразделяются в зависимости от ширины устройств, которые определены в точках останова. При этом, например, применив класс.col-md-* к элементу его стиль будет использован не только для средних устройств, но и к большим устройствам, но только если не задан класс.col-lg-* .

Чтобы понять все эти принципы было еще проще взгляните на изображение ниже:


Медиа-запросы

Для сетки используются следующие медиа-запросы (из LESS-файла):

/* Совсем маленькие устройства (phones, меньше 768px) */ /* Медиа-запросы отсутствуют, так как эти стили стоят в Bootstrap по умолчанию */ /* Небольшие устройства (планшеты, 768px и выше) */ @media (min-width: @screen-sm-min) { ... } /* Средние устройства (мониторы, 992px and up) */ @media (min-width: @screen-md-min) { ... } /* Большие устройства (большие мониторы, 1200px and up) */ @media (min-width: @screen-lg-min) { ... }

Настройки сетки

Совсем небольшие устройства
Phones
(<768px)
Небольшие устройства
Планшеты
(>=768px)
Средние устройства
Настольные
(>=992px)
Большие устройства
Настольные
(>=1200px)
Поведение сетки Горизонтальное все время Сжатая изначально, горизонтальная выше точки останова (видимо имеется ввиду, когда ширина устройства меньше, чем предусмотрено классом – смотрите медиа запросы)
Ширина контейнера None (auto) 750px 970px 1170px
Префикс класса .col-xs- .col-sm- .col-md- .col-lg-
# колонок 12
Ширина колонки Auto ~62px ~81px ~97px
Ширина зазора 30px (15px с каждой стороны колонки)
Вложение Yes
Смещение Yes
Упорядочение колонки Yes

Пример: сложенные по горизонтали

Используя класс.col-md-* , вы создаете сетку, которая начинает складываться (образуется стек) на мобильных устройствах; при этом на средних устройствах ячейки расположены горизонтально. Расположите колонки сетки в любом.row .

stacked-to-horizontal

HTML

.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-1
.col-md-8
.col-md-4
.col-md-4
.col-md-4
.col-md-4
.col-md-6
.col-md-6

Пример: жидкий контейнер

Поменяйте сетку с фиксированной шириной на сетку с шириной на все окно браузера при помощи замены.container на.container-fluid .

HTML

...

Пример: мобильники и настольные устройства

Не хотите, чтобы ваши колонки складывались на мобильных устройствах? Применяйте к колонкам классы для небольших и средних устройств: .col-xs-* , .col-md-* . Смотрите пример ниже для лучшего понимания принципов работы использования нескольких классов.

Пример на официальном сайте - grid-example-mixed

HTML

.col-xs-12 .col-md-8
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6 .col-md-4
.col-xs-6
.col-xs-6

Пример: мобильники, планшеты и настольные устройства

Основываясь на предыдущем примере создайте еще более мощный и динамический макет с классом для планшетов.col-sm-* .

Http://getbootstrap.com/css/#grid-example-mixed-complete

Пример на официальном сайте - grid-example-mixed-complete

HTML

.col-xs-12 .col-sm-6 .col-md-8
.col-xs-6 .col-md-4
.col-xs-6 .col-sm-4
.col-xs-6 .col-sm-4
.col-xs-6 .col-sm-4

Пример: смещение колонки на новую строку

Если в строке расположено более 12 колонок, каждая группа дополнительных колонок, как самостоятельная единица сместится на новую линию.

Пример на официальном сайте - grid-example-wrapping

HTML

.col-xs-9
.col-xs-4
Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
.col-xs-6
Subsequent columns continue along the new line.

Сброс для адаптивных колонок

Имея сетку из четырех колонок вы, возможно, столкнетесь с проблемой, когда для соответствующих точек останова ваши столбцы не выровнялись правильно, так как один столбец выше другого. Чтобы исправить это, используйте комбинацию класса.clearfix и наших служебных отзывчивых классов .

Пример на официальном сайте - grid-responsive-resets

HTML

.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3
.col-xs-6 .col-sm-3

In addition to column clearing at responsive breakpoints, you may need to reset offsets, pushes, or pulls. See this in action in the grid example.

HTML

.col-sm-5 .col-md-6
.col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0
.col-sm-6 .col-md-5 .col-lg-6
.col-sm-6 .col-md-5 .col-md-offset-2 .col-lg-6 .col-lg-offset-0

Смещение колонок

Сместите колонки направо, используя класс.col-md-offset-* . Эти классы увеличивают левое поле колонки на * колонок. Например, .col-md-offset-4 сместит.col-md-4 на четыре колонки.

Пример на официальном сайте - grid-offsetting

HTML

.col-md-4
.col-md-4 .col-md-offset-4
.col-md-3 .col-md-offset-3
.col-md-3 .col-md-offset-3
.col-md-6 .col-md-offset-3

Вложенные колонки

Чтобы вложить ваш контент в существующую сетку, добавьте новую.row и установите.col-md-* колонок внутри уже существующей.col-sm-* колонки.

Пример на официальном сайте - grid-nesting

HTML

Level 1: .col-sm-9
Level 2: .col-xs-8 .col-sm-6
Level 2: .col-xs-4 .col-sm-6

Порядок колонок

Порядок для колонок сетки можно изменить при помощи классов.col-md-push-* и.col-md-pull-* .

Пример на официальном сайте - grid-column-ordering

HTML

.col-md-9 .col-md-push-3
.col-md-3 .col-md-pull-9

Данный туториал предоставляет информацию о «грид» системе фреймворка Bootstrap 3.

Сеточная система Twitter Bootstrap предлагает быстрый и простой способ создавать разметку веб-страниц. Twitter Bootstrap 3 идет в комплекте с адаптивной мобильной плавающей системой сеток, которая структурируется вплоть до 12 колонок в зависимости от увеличения размера устройства или экрана. Давайте посмотрим, как она работает.

    Чтобы правильно выравнять и задать внутренний отступ сетки, блоки с классом.row нужно располагать внутри блоков с классом.container (фиксированная ширина) или.container-fluid (по ширине странице).

    Блоки с классом.row необходимо использовать для создания горизонтальных групп колонок.

    Предопределенные классы сеток, например.row и.col-xs-4, позволяют быстро создавать разметку сеток. Также можно использовать миксины языка стилей less для увеличения количества типов семантической разметки.

    Колонки создают промежутки (gutters) (разрывы между содержанием колонок) через внутренний отступ (padding). Этот внутренний отступ (padding) смещается для первой и последней колонок из-за отрицательного значения внешнего отступа (margin) блоков с классом.row.

    Колонки сеток создаются путем указания требуемого числа из двенадцати доступных колонок. Например, для трех одинаковых колонок нужно использовать три контейнера с классом.col-xs-4.

    Классы сеток применяются к устройствам, в которых ширина больше или равна контрольным размерам, и переопределяют классы сеток, предназначенных для меньших устройств. Таким образом, применение любого класса.col-md- к элементу задаст стиль не только для средних, но и для больших устройств в том случае, если не используется класс.col-lg- .

Разметка

Twitter Bootstrap 3 включает предопределенные классы сеток, чтобы быстро верстать сеточную разметку для различных типов устройств, например мобильные телефоны, планшеты, компьютеры и т.п. Например, можно использовать класс.col-xs- , чтобы создавать сеточные колонки для очень маленьких устройств, как, например, мобильный телефон; таким же образом класс.col-sm- употребляется для маленьких устройств ~ планшетов, класс.col-md- для средних устройств ~ компьютеров и.col-lg- для больших экранов компьютеров. Ниже приводятся виды разметки системы сеток Bootstrap .

    Очень маленькие устройства ~ телефоны (<768px)

    Маленькие устройства ~ планшеты (≥768px)

    Средние устройства ~ компьютеры (≥992px)

    Большие устройства ~ компьютеры (≥1200px)

Настройки сеток

Пожалуйста, ознакомьтесь со следующей таблицей для более детальной информации:

Применение класса.col-sm- к элементу повлияет на стиль не только для маленьких устройств, например планшетов, но также для средних и больших устройств с шириной экрана больше или равной 768px (т.е. ≥768px), если не употребляются классы.col-md- и.col-lg- . Подобным образом, класс.col-md- повлияет не только на стиль для средних устройств, но также и для больших, если не употребляется класс.col-lg- .

Приведем примеры:

  1. Stacked-to-horizontal (Построение блоков столбцом, которое переходит в строчное на компьютерах). При помощи простого набора сеточных классов.col-md-*, можно создать базовую сеточную систему, при которой блоки располагаются столбцом на мобильных устройствах и планшетах (очень маленькие и маленькие устройства), но трансформируются в строку на компьютерах (средние устройства). Колонки сетки могут располагаться в любом блоке с классом.row.

    Пример кода:

    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-1
    .col-md-8
    .col-md-4
    .col-md-4
    .col-md-4
    .col-md-4
    .col-md-6
    .col-md-6

  2. Fluid container (Подвижный контейнер) . Превратите любую сеточную разметку с фиксированной шириной в подвижную, изменив класс контейнера с.container на.container-fluid.

    ...

    Mobile and desktop (Мобильные устройства и компьютер) . Можно использовать классы сеток для очень маленьких и средних устройств, добавляя.col-xs-* .col-md-* в колонки.

    Пример кода:

    .col-xs-12 .col-md-8
    .col-xs-6 .col-md-4
    .col-xs-6 .col-md-4
    .col-xs-6 .col-md-4
    .col-xs-6 .col-md-4
    .col-xs-6
    .col-xs-6

    Mobile, tablet, desktops (Мобильный, планшет, компьютеры). Постройте еще более динамичную разметку для планшета при помощи класса.col-sm-* , используя предыдущий пример.

    Пример кода:

    .col-xs-12 .col-sm-6 .col-md-8
    .col-xs-6 .col-md-4
    .col-xs-6 .col-sm-4
    .col-xs-6 .col-sm-4
    .col-xs-6 .col-sm-4

    Column wrapping (Перенос колонок) . Если в одном блоке с классом.row находится больше 12 колонок, каждая группа дополнительных колонок будет переходить на новою строку как единое целое.

    Пример кода:

    .col-xs-9
    .col-xs-4
    Since 9 + 4 = 13 > 12, this 4-column-wide div gets wrapped onto a new line as one contiguous unit.
    .col-xs-6
    Subsequent columns continue along the new line.

    Responsive column resets (Исправление адаптивных колонок) . При использовании четырех доступных сеток, вы столкнетесь с проблемой, когда в определенных точках колонки выглядят неправильно из-за разницы высоты. Чтобы это исправить, используйте комбинацию блока с классом.clearfix и адаптивных служебных классов.

    Пример кода:

    .col-xs-6 .col-sm-3
    .col-xs-6 .col-sm-3
    .col-xs-6 .col-sm-3
    .col-xs-6 .col-sm-3

    Offsetting columns (Смещение колонок) . Двигайте колонки вправо при помощи классов.col-md-offset-* . Эти классы увеличивают отступ слева от блока на * количество колонок. Например, класс.col-md-offset-4 подвинет блок с классом.col-md-4 на четыре колонки.

    Пример кода:

    .col-md-4
    .col-md-4 .col-md-offset-4
    .col-md-3 .col-md-offset-3
    .col-md-3 .col-md-offset-3
    .col-md-6 .col-md-offset-3

    Nesting columns (Вложенные колонки) . Чтобы вложить содержание в основную сетку, добавьте новый блок с классом.row и набор колонок.col-sm-* внутри существующей колонки.col-sm-*. Вложенные блоки с классом row должны включать набор из 12 или менее колонок (не рекомендуется использовать все 12 доступных колонок).

    Пример кода:

    Level 1: .col-sm-9
    Level 2: .col-xs-8 .col-sm-6
    Level 2: .col-xs-4 .col-sm-6

    Column ordering (Порядок отображения колонок) . Порядок отображения встроенных сеточных колонок можно изменить при помощи модифицированных классов.col-md-push-* and .col-md-pull-*.

    Пример кода:

    .col-md-9 .col-md-push-3
    .col-md-3 .col-md-pull-9

Адаптивные служебные классы Bootstrap

    Используйте следующие адаптивные классы, чтобы управлять видимостью элементов на устройствах, чьи размеры экранов подпадают под определенный тип. В версии v3.2.0, классы.visible-*-* для каждого контрольного размера представляются в трех вариантах, по одному на каждое значение свойства CSS display: inline, block и inline-block.

    Подобным образом можно использовать служебные классы для скрытия, чтобы прятать элементы на определенных устройствах:

    Можно использовать следующие служебные классы, чтобы показать или убрать определенные элементы при печати страницы.

От автора: я приветствую вас. В прошлых статьях мы рассмотрел подключение фреймворка Bootstrap и первые шаги работы с ним. Настал час затронуть самую важную тему. А именно, как работает в Bootstrap сетка. Именно понимание этого вопроса сильно упростит вам верстку сайтов.

Любой css-фреймворк имеет свою сетку. Практически, если мы рассматриваем, для чего вообще создается css-фреймворк, то во многом только для сетки, которая позволяет быстро и легко верстать адаптивные шаблоны. Остальные компоненты вроде кнопок, таблиц, форм и прочего можно сделать и самому, зачастую именно так и нужно.

Конечно, приятно, что Bootstrap есть все компоненты и можно использовать все готовое, но в первую очередь нас интересует именно сетка. Итак, давайте подробно рассмотрим сетку бутстрапа.

12-ти колоночная сетка Bootstrap

Итак, в сетке этого фреймворка по умолчанию 12 колонок. На самом деле при кастомизации фреймворка вы сможете выставить любое другое значение, но практически всегда вас будет устраивать 12 колонок. Число 12 делится на много других чисел, поэтому им очень удобно оперировать.

Если вы ранее создавали с помощью html тегов таблицы, то следующее сравнение будет для вас как нельзя кстати. Ведь сетку фреймворка можно сравнить с обычной таблицей.

Вся сетка должна располагаться в общем контейнере. Это должен быть блок с классом container или container-fluid. Отличие у классов в том, что первый имеет максимальные фиксированные размеры, а именно 1170 пикселей. То есть ширина сайта не будет больше этого значения.

Container-fluid – это полностью резиновый контейнер, который растягивается всегда на 100% ширины окна, поэтому если у вас полностью резиновый сайт, вам нужен именно такой контейнер. Если мы говорим о таблицах, то там тоже есть свой глобальный контейнер – table.

Внутри этого контейнера должен быть еще один блок с классом row, то есть одна строка сетки. И опять же, если сравниваем с таблицами, то там за вывод одного табличного ряда отвечает тег tr. Ряды сетки и таблицы очень похожи, потому что в обоих случаях они просто выступают контейнерами для основного содержимого – в них самих никакой контент не размещается, да и стили к ним не применяются.

Например, если мы говорим о простом сайте, то можно разделить его на три ряда – шапка сайта, блок для основного контента и боковая колонка и подвал. Заметьте, что контент и сайдбар мы поместили в один ряд, потому что это действительно так.

В самом ряду располагаются уже непосредственно ячейки ил колонки, как принято говорить при верстке на Bootstrap. Колонка имеет класс col-x-x, где первый x – обозначение устройства, а второй – кол-во колонок от 1 до 12. Как это работает, мы с вами сейчас посмотрим. Если вам удастся это понять, то вы также быстро поймете, почему так легко делать адаптивные сайты на Bootstrap.

Итак, разработчики фремворка при создании сетки выделили 4 основных типа устройств по ширине экрана. Хорошую таблицу с перечнем классов для сетки вы можете найти в русской документации, которая находится здесь — http://www.oneskyapp.com/ru/docs/bootstrap/css#grid.

Вот скриншот этой таблицы. Итак, мы видим, что для самых маленьких устройств, у которых ширина экрана менее 768 пикселей, префикс класса – col-xs- или если отбросить col, просто xs. Далее идет sm (small-devices, ширина от 768 до 991 пикселей), md (medium-devices, ширина от 992 до 1199 пикселей) и large-devices, с шириной более 1200 пикселей.

Как же все это работает? Разбор на примерах

Пока, возможно, вы ничего не поняли, но это нормально. Сейчас я предлагаю вам попрактиковаться: открыть редактор кода, браузер и начать писать код. Естественно, перед этим подключите к html-файлу фреймворк Bootstrap, в прошлых статьях этот вопрос подробно рассматривался.

Итак, давайте рассмотрим этот кусок кода:

Первый
Первый

< div class = "container" >

< div class = "row" >

< div class = "col-md-3 col-sm-6" > Первый< / div >

< div class = "col-md-1 col-sm-6" > Первый< / div >

< / div >

< / div >

Если вы внимательно читали предыдущий текст, то уже понимаете, что мы сейчас создаем свои первые блоки в сетке. Мы поместили в класс container 1 ряд, а в него, в свою очередь, 2 блока.

Как же работают классы типа col-x-x? Очень просто, откройте пока браузер и посмотрите на результат. Кстати, результата-то и не будет видно, потому что мы никак не стилизовали наши блоки. Давайте это исправим. Этот код можно вставить в style.css, который вы самостоятельно создадите и подключите:

div{ background: #8CC7D9; border: 1px solid #6B6ACD; }

div [ class ^= col ] {

background : #8CC7D9;

border : 1px solid #6B6ACD;

Отлично, вот что мы видим в браузере:

Отмечу, что я просматриваю результат на своем компьютере, у которого ширина экрана более 1200 пикселей, а значит Bootstrap классифицирует его как large-устройство.

Итак, первый блок занимает 25% ширины контейнера (если 12 колонок считается за 100% ширины, то 3, соответственно, за 25%). Ну а второй примерно 8-8,5%, точные расчеты нам ни к чему. Остальные 66% ширины контейнера будут пусты. Конечно, на скриншоте вы этого не видите, так как я просто не могу запихнуть в статью скриншот всего моего экрана, так как он слишком велик, поэтому я и советовал вам повторять все за мной.

А теперь давайте проверим, как поведут себя блоки на ширине менее 992 пикселя. Начните сужать окно. В Google Chrome после нажатия F12 при сужении вы будете видеть в правом верхнем углу точную ширину окна.

Ну а я, пожалуй, воспользуюсь браузером Internet Explorer. Вот так блоки выглядят на ширине чуть-чуть больше 768 пикселей, то есть на small-экранах.

Как видите, вместо 25% и 8% каждый блок занимает теперь ровно по 50% ширины ряда. А все благодаря этим инструкциям:

col-md-3 col-sm-6 col-md-1 col-sm-6

col - md - 3 col - sm - 6

col - md - 1 col - sm - 6

То есть с помощью этих классов мы как бы говорим бутстрапу: на средних и больших устройствах дай первому блоку ширину в 3 колонки из 12, а второму – 1 из 12. А вот на маленьких, будь добр, оба блока показать на 50% ширины ряда.

А что же произойдет на самых маленьких экранах? Вот я совсем сузил окно, как будто мы смотрим сайт с телефона:

Фреймворк Bootstrap 4. Быстрый старт

Изучите основы Bootstrap 4 на практическом примере по верстке блога с нуля

Как видите, инструкция, которая действовала для small-устройств, отменилась для extra-small и каждый блок стал занимать по 100% ширины в ряде. Запомните, что это поведение блоков по умолчанию – занимать 100% ширины в своем контейнере.

Из этого всего следует несколько выводов, можете перечитать их несколько раз, потому что понять эти вещи крайне важно:

Если мы задаем, например, col-sm-6, то такая ширина сохраниться у блока и на md и lg, если для этих устройств ничего не прописано.

Возьмем этот же пример (col-sm-6). А вот на xs, то есть на экстра-маленьких устройствах, ширина блока будет 100%, а не 50%. То есть наследование прописанной ширины происходит только для больших устройств, но ни в коем случаев не для меньших. Например, если вы напишите такой класс: col-lg-6, то такая ширина у блока будет только на экранах более 1200 пикселей. На md, sm, xs устройствах будет другая ширина.

Вы можете указывать блоку не один, а несколько классов. Например, col-xs-6 col-md-4. Попробуйте сами в уме ответить, какой будет ширина блока на разных устройствах? Не читайте дальше)

А ответ таков:

На xs-экранах будет 50%, то есть половина ширины контейнера

На sm то же самое – 50%. Почему? Как я уже сказал выше, значение наследуется для устройств с большей шириной.

На md блок займет треть ширины.

На самых больших экранах тоже треть. Опять же, значение наследуется из md.

Но Bootstrap ничем вас не ограничивает и вы можете прописать даже так:

< div class = "col-xs-10 col-sm-8 col-md-6 col-lg-4" > < / div >

То есть вообще для каждого типа устройств задать свое отображение. Тут вы уже сами можете понять, насколько широким будет блок на разной ширине экранов.

ВНИМАНИЕ! Никогда не допускайте ситуации, чтобы у вас в одном ряду было более 12-ти колонок, иначе ваш сайт может развалиться.

Дальше – интереснее! Вложенные сетки

Но мощь сетки Bootstrap не только в том, что вы можете задать разное отображение блоков на разной ширине. А еще в том, что можно вкладывать сетку в какой-угодно блок. Давайте рассмотрим такой пример кода:

1
2
3

< div class = "container" >

< div class = "row" >

< div class = "col-sm-8 col-md-6" >

< div class = "row" >

< div class = "col-sm-4 col-md-3" > 1 < / div >

< div class = "col-sm-4 col-md-3" > 2 < / div >

Но ведь мы можем спокойно представить себе, что этот блок является тоже контейнером, почему нет? По сути, так и есть при разработке сайта. Есть общий контейнер для всего сайта, контейнер для контента, сайдбара, шапки и т.д.

Можно представить, что этот блок – контейнер для основного блока с текстом на сайте, в него мы помещаем, в свою очередь, ряд (обязательно придерживайтесь в коде структуры – контейнер – ряд — ячейки).

В этом ряду, как видите, 3 блока и для каждого задано поведение на разных устройствах. По сути, мы получили сетку внутри основной сетки! И эта вложенная сетка тоже будет иметь 12 колонок.

Я вам скажу даже больше. Вложенных сеток может быть неограниченное количество. Например, эти три блока – это три карточки товара в интернет-магазине. Структура самой карточки может быть тоже достаточно сложной. Кто знает, может и там вы используете вложенную сетку.

Таким образом, фреймворк Bootstrap попросту стирает перед вами любые препятствия при верстке веб-страниц: вы можете создать как простые типовые шаблоны, так и сложнейшие страницы с тысячей элементов на них. Ведь сетка – это не просто общий контейнер сайта, систему сетки можно применить даже при разметке очень незначительных блоков.

Адаптивные утилиты

Еще одна потрясающая возможность фреймворка – адаптивные утилиты. Сейчас объясню. Наверняка вы не планируете на мобильных устройствах отображать 100% элементов сайта, которые видны на больших десктопах – вам попросту некуда будеть все это впихнуть. Очень часто на мобильных устройствах полностью убирают боковую колонку, сворачивают меню, удаляют какие-то большие декоративные элементы и т.д.

В Bootstrap все это очень легко делать с помощью классов, которые называют адаптивными утилитами. В документации ознакомиться с ними можно тут: http://www.oneskyapp.com/ru/docs/bootstrap/css#responsive-utilities

Вот список этих классов. Чтобы скрыть элемент на нужном устройстве, достаточно всего лишь использовать один из четырех классов: hidden-xs|sm|md|lg. Хочу отметить, что элемент будет скрыт только на указанной ширине экрана, на всех остальных он останется видимым.

Если вам нужно сделать элемент видимым только на одном из четырех типов устройств, удобнее использовать классы visible-xs|sm|md|lg- block|inline|inline-block.

Кроме самого ключевого слова и типа устройств тут еще нужно указать, как именно отображать элемент: как блочный, строчный или блочно-строчный. Примеры:

visible-xs-inline – элемент будет виден только на самых маленьких экранах и будет отображаться как строка;

visible-lg-block – будет виден только на самых больших экранах и будет блочным;

Адаптивные утилиты позволяют как угодно трансформировать сайт на всех типах устройств. Используйте их по мере необходимости в своей верстке.

Другие возможности сетки и итог

Друзья, очень много еще можно написать о сетке бутстрапа, потому что мы рассмотрели примерно только половину теории. С остальными классами и примерами вы можете ознакомиться в документации.

Почему я настоятельно вам его рекомендую? Потому что теория, это теория. Вы можете прочитать эту статью вместе с документацией хоть по 10 раз, но если не закрепите все примеры на практике, это будет практически бесполезно. Мы обожаем практику и считаем, что именно она – залог успеха. Даже если из теории что-то вы не поймете, то потом, во время верстки реального макета вы увидите своими глазами, как работает сетка, и уже никто из вас это понимание не выбьет.

Мало того, в курсе не просто объясняется теория и верстается простой макет. Наша с вами цель – стать профессиональными разработчиками, а для этого нужно верстать уже макеты повышенного уровня сложности, чем мы с вами и займемся во второй части курса, сверстав интернет-магазин и лендинг.

В общем, осваивать Bootstrap на профессиональном уровне или нет – это решать вам. Моя цель была в том, чтобы объяснить вам основы функциониования сетки в Бутстрапе. Надеюсь, у меня это получилось и вы прочитали эту публикацию с пользой для себя. В ближайшее время ждем вас в кругу профессиональных веб-разработчиков, использующих Bootstrap для верстки макетов любого, абсолютно любого уровня сложности!

Фреймворк Bootstrap 4. Быстрый старт

Изучите основы Bootstrap 4 на практическом примере по верстке блога с нуля

Всем привет, друзья! В середине 2013 года вышел Bootstrap 3, который за прошедшие годы неплохо зарекомендовал себя как удобный, расширяемый CSS каркас для быстрого создания адаптивных макетов. Миллионы сайтов успешно используют этот фреймворк и мы уже порядком привыкли к нему.

Класснуть

Запинить

18 января 2018 года случилось важное событие - вышла из беты долгожданная версия Bootstrap 4 , основанная на использовании модели Flexbox для разметки, которая в настоящее время уже имеет поддержку всех современных браузеров и является более удобной и гибкой для разработчиков, нежели классическая модель разметки, основанная на Float. Теперь с полной уверенностью можно сказать, что на «Флексах» не можно, а НУЖНО верстать!

Дополнительные материалы урока Bootstrap 4

  1. Все примеры урока вы можете потестировать самостоятельно: Скачать архив
  2. Более подробно ознакомиться с документацией Bootstrap 4 вы можете на оф. сайте ;
  3. Последний стартер, включающий Bootstrap 4: OptimizedHTML 5 .

Сегодня мы подробно разберем работу с сеткой Bootstrap 4, по ходу дела сравнивая её со старой версией. Данный урок будет полезен вам не только если вы новичок и знакомитесь с Bootstrap, но и в том случае, если вы опытный разработчик и хотите изучить все правила и нюансы верстки с использованием сетки Bootstrap 4 и Flexbox инструментов, входящих в её состав.

1. Основные параметры сетки по-умолчанию

По-умолчанию сетка Bootstrap 4 очень похожа на сетку третьей версии, однако появились некоторые важные отличия.


Из таблицы основных опций мы можем заметить явные отличия от сетки третьей версии. Теперь отсутствует префикс класса «.col-xs-», отвечающий за самые маленькие разрешения, вместо него указывается упрощенный префикс «.col-». Можно ошибочно подумать, что префикс «.col-» отвечает за минимальные разрешения мобильных устройств, однако это не совсем так. Помимо всего прочего, префикс «.col-» - это одно из важнейших новшеств Bootstrap 4. Это класс, который отвечает за автоматическую разметку колонок на любом разрешении. Но об этом позже.

За малые разрешения (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»), ширина которых будет автоматически вычислена в зависимости от количества элементов и будет равна.

Например:


2.2 Установка ширины одной колонки

Вы также можете явно установить ширину одной колонки, а остальные оставить автоматическими.

1 из 3
2 из 3 (широкое)
3 из 3
1 из 3
2 из 3 (широкое)
3 из 3

В данном примере второй элемент в третьем ряду имеет класс «.col-6» и второй элемент во втором ряду имеет класс «.col-5», которые занимают соответствующее количество колонок на всех разрешениях экрана. Ширина остальных колонок является отзывчивой и вычисляется автоматически, занимая всё оставшееся пространство.

2.3 Контент переменной ширины

Можно использовать класс «col-{breakpoint}-auto», чтобы определить контент с переменной шириной, в зависимости от занимаемого пространства содержимым колонки. Где breakpoint - размер экрана (xl, lg, md или sm).

1 из 3
Контент переменной ширины
3 из 3
1 из 3
Контент переменной ширины номер два
3 из 3

Здесь мы видим, что две центральные колонки занимают ширину, соответствующую ширине содержимого, однако в первом ряду благодаря классу «.justify-content-sm-center» у «.row» весь ряд центрируется и общая ширина зависит только от ширины центральной колонки, в то время, как второй ряд растягивается на всю доступную ширину, но вторая колонка остается фиксированной по ширине содержимого.

2.4 Мульти-ряд

Благодаря Bootstrap 4 вы можете сделать в одном ряду несколько строк (переносов). Реализовать это можно с помощью класса «.w-100», который очень похож на тег «br» и по-сути просто делает перенос колонок на новую строку.

col
col
col
col
col

Обратите внимание, что данный класс является частью дополнительных возможностей Bootstrap 4, которые подключаются к проекту отдельно в случае использования Sass версии проекта Bootstrap и находятся в папке «scss/utilities». Вы также можете подключить другие плагины из этой папки к вашему проекту по необходимости.

3. Адаптивные классы

3.1 Брейкпоинты

Очень интересная возможность Bootstrap 4 - возможность задавать универсальные колонки, которые будут отображаться на всех разрешениях. Это упомянутый ранее класс «.col». Кроме того, можно определить класс, указывающий конкретное количество колонок, занимаемое содержимым - это классы с префиксом «.col-{число колонок}», например «.col-6» говорит нам о том, что содержимое займёт 6 колонок из 12. В случае, когда конкретное количество задавать не обязательно, можно смело использовать универсальный класс «.col».

col
col
col
col
col-8
col-4

3.2 На мобильных устройствах

Вы можете использовать префикс класса «.col-sm-{количество занимаемых колонок}» для того, чтобы задать базовую сетку на всех разрешениях, кроме самых маленьких. На небольших экранах колонки такой сетки будут складываться друг под друга. На разрешениях больше - будут занимать столько места, сколько вы определили в классах.

col-sm-8
col-sm-4
col-sm
col-sm
col-sm

Здесь мы видим, что первый ряд на устройствах с разрешением более «sm», то-есть больше, чем 576 пикс. разбивается на 2 колонки - шириной 8 и 4 из 12-ти соответственно. Ширина колонок во втором ряду вычисляется автоматически, но на самых малых разрешениях эти колонки также складываются друг под друга, благодаря классу «.col-sm».

3.3 Создание сложной комбинированной сетки

С помощью Bootstrap вы можете создавать любые комбинации колонок при создании сетки. Для каждой колонки можно задать любое поведение на различных разрешениях с помощью адаптивных классов. Здесь отличия от третьей версии - только в наименованиях классов.

.col-12 .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

4. Выравнивание

Bootstrap 4 основан на «флексах» и дарит нам все возможности данной модели, которые доступны в простых готовых классах. В числе возможностей - вертикальное и горизонтальное выравнивание.

4.1 Вертикальное выравнивание

Верх
Верх
Верх
Середина
Середина
Середина
Низ
Низ
Низ

Помимо управления выравниванием через родительский «.row», можно выравнивать колонки, задавая им соответствующие классы:

Верх
Середина
Низ

4.2 Горизонтальное выравнивание

Кроме того, Bootstrap 4 имеет в своём арсенале инструменты для горизонтального выравнивания колонок при помощи префикса «.justify-content-» у «.row».

row justify-content-start
row justify-content-start
row justify-content-center
row justify-content-center
justify-content-end
justify-content-end
justify-content-around
justify-content-around
justify-content-between
justify-content-between

4.3 Удаление полей между колонками

Очень часто встречаются ситуации, когда необходимо убрать поля между колонками. Например, если вы создаете галерею и элементы должны быть расположены вплотную, например так:


Для этого достаточно у элемента «.row» задать дополнительный класс «.no-gutters».

col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4
col-6 col-sm-4 col-md-4

4.4 Перенос колонок на новую строку

Если ряд (.row) заполняется суммарным количеством колонок более 12-ти, последующая колонка переносится на новую строку.

.col-9
.col-4
9 + 4 = 13 колонок - это больше 12. Данный элемент шириной в 4 колонки будет перенесён на новую строку.
.col-6
Следующие колонки расположатся вдоль строки.

Здесь всё также, как в 3-й версии Bootstrap.

5. Порядок элементов

5.1 Классы порядка элементов

Можно использовать специальные классы с префиксом «.order-» для определения порядка элементов. Если вы знакомы с Flex-вёрсткой, данные правила будут вам знакомы. Bootstrap 4 даёт возможность задавать порядок элементов с помощью классов. Можно задавать порядок напрямую (.order-1.order-md-2):

Первый неупорядоченный элемент

Или можно использовать специальные классы, которые определяют порядок первого и последнего элементов (.order-first, .order-last):

Первый неупорядоченный
Второй, упорядоченный как последний
Третий, упорядоченный как первый

5.2 Смещение колонок

По аналогии с Bootstrap 3, в 4-й версии также есть возможность горизонтального смещения колонок, однако реализовано это несколько иначе и для этого есть специальные классы с префиксом «.offset-».

5.2.1 Классы смещения

Сдвигать колонку вправо можно, используя классы «.offset-md-*», которые увеличивают левый отступ на * количество элементов. Из примера ниже, класс «.offset-md-2» сдвинет колонку «.col-md-4» на 2 колонки вправо, остальные примеры работают по аналогии:

.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

Можно сбрасывать отступ на всех разрешениях благодаря классу «.offset-*-0», где * - это sm, md, lg или xl.

6. Вложенность

Весьма ожидаемо, что Bootstrap 4 поддерживает вложенность элементов. Работает здесь всё также, как в третьей версии - чтобы вложить колонки в другие, необходимо создать дочерний класс «.row» и уже в него вкладывать колонки.

Уровень 1: «.col-sm-9»
Уровень 2: «.col-8 .col-sm-6»
Уровень 2: «.col-4 .col-sm-6»

Мы рассмотрели основные особенности работы с сеткой Bootstrap 4. Если у вас есть желание более подробно ознакомиться со всеми возможностями фреймворка, рекомендую изучить документацию на официальном сайте.

В следующем уроке мы рассмотрим настройку Bootstrap сетки под ваш конкретный проект на примере использования в стартовом шаблоне OptimizedHTML 4. А именно настройку, работу с переменными отступов, брейкпоинтов, количества колонок и прочего.

Twitter Bootstrap сетка обеспечивает быстрый и простой способ создания макетов веб-страниц. В отличие от предыдущей сетки системы, которая фиксируется по умолчанию, новую версию Twitter Bootstrap 3 выделяет адаптивная мобильная верстка, расширение до 12 столбцов, при увеличении размера устройства или вида экрана.

Бутрстрап 3 включает предопределенные классы сетки для быстрого создания макета для различных типов устройств — сотовых телефонов, планшетов, настольных ПК и так далее. Например, вы можете использовать.col-xs- класс для создания сетки колонок для дополнительных небольших устройств, таких как сотовые телефоны. Класс.col-sm- для небольших экранов устройств, таких как карманные компьютеры. Класс.col-MD- для средних устройств, таких как десктопные компьютеры и.col-lg- для больших экранов настольных ПК. В следующей таблице приведены некоторые из ключевых особенностей новой системы сетки.

В приведенной выше таблице показана одна важная вещь — применяя любой.col-sm-класс, на стиль элемента он будет влиять не только на небольших устройствах, таких как таблетки, но и на средних и крупных устройствах, имеющих размер экрана больше или равным 768px, если.col-md- и.col-lg- класса нет. Аналогично.col-md-класс будет влиять не только на стиль элементов на средних устройствах, но и на больших устройствах, если.col-lg- класс не указан.

Создание сетки с Twitter Bootstrap 3 Grid System

С новым Twitter Bootstrap 3 сеткой можно легко управлять и смотреть, как ваш макет веб-сайта будет показываться на различных типах устройств, которые имеют различные размеры экрана. Давайте рассмотрим следующий пример.

В приведенной выше иллюстрации есть всего 12 колонок контента во всех устройствах, но их размещение меняется в зависимости от размера экрана устройства. В мобильном устройстве макет отображается в виде сетки, которая имеет 1 столбец и 12 строк размещены друг над другом, в то время в таблетке оно отображается как сетка, которая имеет 2 колонки и 6 рядов. Аналогично в устройствах со средним размером экрана, таких как ноутбук и рабочий стол ПК — она предоставляется в виде макета, который имеет 3 столбца и 4 строки. Наконец, в устройствах с большими экранами, макет представляет из себя сетку, которая имеет 4 колонки и 3 ряда.

Теперь возникает вопрос, как мы можем создавать такие адаптивные макеты, используя Twitter Bootstrap. Давайте начнем с средне-размерных устройств — ноутбук или обычный настольный ПК. Наш макет имеет 3 столбца и 4 строки (т.е. 3×4 макет сетки). Вводим следующую разметку:

Если мы посмотрим приведенный выше пример в ноутбуке или настольном ПК, имеющего экран или окно просмотра шириной больше или равной 992px и менее 1200px, мы увидим 4 строки, где каждая строка имеет 3 равные колонки.

В приведенном выше примере есть одна серьёзная проблема в выравнивании. Если высота любого столбца больше другого, то он не подстроиться под другой должным образом и целостность нарушится. Чтобы исправить это, используйте.clearfix класс и адаптивные служебные классы.

Поскольку по умолчанию сетка имеет 12 столбцов и в нашем макете сумма каждых трёх столбцов (т.е. col-md-*) равна 12, мы очищаем столбцы после каждого третьего появления. В любом другом случае, где колонки col-md-*различны, мы должны использовать.clearfix после столбца, который делает полную сетку из 12 колонок. Адаптивный служебный класс.visible-md-block делает.clearfix класс действующим только на устройствах среднего размера и она скрытым на других устройствах.

Совет: Для начала нужно выбрать первичное целевое устройство и создать макет для этого устройства, после этого добавлять классы, чтобы сделать дизайн адаптивны для других устройств.

Теперь пришло время, чтобы настроить наш макет для других устройств. Настроим его для планшета. Поскольку на таблет-пк наша разметка отображается как 2×6 сетка (т.е. 2 колонки и 6 строк), нам нужно добавить класс.col-sm-6 на каждый столбец.

Теперь, так как сумма каждых двух столбцов, т.е. col-sm-* равна 12, после каждого второго столбца, следующие другие располагаются ниже.

После очистки для небольших устройств наш окончательный код будет выглядеть так:

Подобным образом мы можем настроить внешний вид для больших устройств, таких как экран рабочего стола персонального компьютера.

Совет: В соответствии с приведенным выше кодом, нет необходимости настраивать расположение для дополнительных небольших устройств, таких как мобильные телефоны. Ведь колонки на дополнительных небольших устройствах всегда горизонтальные и отображаются как один столбец макета сетки по умолчанию.

Адаптивные служебные классы

Вы можете использовать следующие адаптивные классы для того, чтобы управлять видимостью элементов на некоторых устройствах, при уменьшении размеров экрана с определенного диапазона.

В версии фреймворка v3.2.0, класс.visible-*-* для каждой точки идёт в трех вариациях, по одному для каждого CSS отображения: inline, block и inline-block.

Совет: Вы можете также смешать эти классы, чтобы сделать элементы видимыми на нескольких устройствах. Например, вы можете применить классы.visible-xs-* и.visible-md-* на любом элементе, чтобы сделать его видимым на дополнительных малых и средних устройствах.

Этот пункт отображается только на дополнительных небольших устройствах.

Этот пункт отображается только на небольших устройствах.

Этот пункт отображается только на средних устройствах.

Этот пункт отображается только на больших устройствах.

Подобным образом вы можете использовать эти скрытые служебные классы, чтобы скрыть элементы на некоторых устройствах.

Совет: Вы можете также смешать эти классы, чтобы сделать элементы, скрытые на нескольких устройствах. Например, вы можете применить классы.hidden-xs и.hidden-md на любом элементе, чтобы сделать его скрытым на дополнительных малых и средних устройствах.

Этот пункт скрыт только на средних устройствах.

Кроме обычных адаптивных классов, вы можете использовать следующие служебные классы, чтобы показать или скрыть определенные элементы для печати на устройствах.

Случайные статьи

Вверх