Bootstrap 3. Контейнер и сетка

12.01.2016

Теги: BootstrapCSSHTMLWeb-разработкаВерсткаФреймворкШаблонСайта

Bootstrap — это открытый и бесплатный HTML, CSS и JS фреймворк, который используется веб-разработчиками для быстрого создания адаптивных дизайнов сайтов. В сущности — это просто набор сss- и js-файлов. После подключения этих файлов к странице станут доступны большое количество готовых классов и компонентов.

Сетка

Сетка — это набор предопределённых css-классов, с помощью которых можно задать необходимое поведение блокам и построить с их помощью адаптивный макет сайта.

Оберточный контейнер

Оберточный контейнер — это элемент сетки, с которого начинается создание макета для всей страницы или её части (шапка, основной области, подвал). Контейнер может быть адаптивно-фиксированным (класс container) или адаптивно-резиновым (класс container-fluid).

  • Адаптивно-фиксированный контейнер имеет постоянную ширину в пределах некоторого диапазона ширины окна браузера. Кроме того, контейнер центрирует себя в горизонтальном направлении и задает внутренние отступы (padding) слева и справа по 15рх.
  • Адаптивно-резиновый контейнер занимает всю ширину окна браузера. Кроме этого, он также как и адаптивно-фиксированный контейнер, задает внутренние отступы (padding) слева и справа по 15рх.
.container { /* адаптивно-фиксированный контейнер */
    padding-right: 15px;
    padding-left: 15px;
    margin-right: auto;
    margin-left: auto;
}
.container-fluid { /* адаптивно-резиновый контейнер */
    padding-right: 15px;
    padding-left: 15px;
    margin-right: auto;
    margin-left: auto;
}

Ряды и адаптивные блоки

Следующий элемент сетки — это ряд (блок div с классом row), который применяется только для оборачивания других элементов (адаптивных блоков). Его основное назначение — это нейтрализация положительного внутреннего отступа (15px слева и справа) контейнера.

.row {
    margin-right: -15px;
    margin-left: -15px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1,
.col-xs-2, .col-sm-2, .col-md-2, .col-lg-2,
/* .......... */
.col-xs-11, .col-sm-11, .col-md-11, .col-lg-11,
.col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
    padding-right: 15px;
    padding-left: 15px;
}

Последний элемент сетки — адаптивные блоки (div с классом col-?-?). Эти блоки являются основными «строительными» кирпичиками, именно они и формируют необходимую структуру. Адаптивный блок на разных устройствах может иметь разную ширину.

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

/* Очень маленькие устройства (телефоны, менее чем 768px) */  
/* Без медиа запросов, так как в Bootstrap это по умолчанию */  

/* Небольшие устройства (планшеты, 768px и выше) */  
@media (min-width: @screen-sm-min) { ... }

/* Средние устройства (ноутбуки, 992px и выше) */  
@media (min-width: @screen-md-min) { ... }

/* Большие устройства (компьютеры, 1200px и выше) */  
@media (min-width: @screen-lg-min) { ... }
Телефоны (<768px) Планшеты (≥768px) Ноутбуки (≥992px) Настольные (≥1200px)
Ширина контейнера auto 750px 970px 1170px
Класс префикса .col-xs- .col-sm- .col-md- .col-lg-
Ширина колонки auto ~62px ~81px ~97px

Заготовка страницы

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap</title>
    <link href="css/bootstrap.css" rel="stylesheet">
    <link href="css/style.css" rel="stylesheet">
</head>
<body>
    ..........
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
</body>
</html>
/*
Стили для самых маленьких устройств, концепция «Mobile First». Эти стили будут применяться
и для всех других экранов (sm, md, lg), если не будут переопределены в media-запросах.
*/
body {
    font-family: 'Open Sans', sans-serif;
}
img {
    max-width: 100%;
}

/* Небольшие устройства (планшеты, 768px и выше) */  
@media only screen and (min-width: 768px) {
    .....
}

/* Средние устройства (ноутбуки, 992px и выше) */
@media only screen and (min-width: 992px) {
    .....
}

/* Большие устройства (компьютеры, 1200px и выше) */
@media only screen and (min-width: 1200px) {
    .....
}

Сброс обтекания

<div class="row">
    <div class="col-md-4">...</div>
    <div class="col-md-4">...</div>
    <div class="col-md-4">...</div>

    <!-- Сброс обтекания для md и lg устройств -->
    <div class="clearfix visible-md-block visible-lg-block"></div>

    <div class="col-md-4">...</div>
    <div class="col-md-4">...</div>
    <div class="col-md-4">...</div>
</div>

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

<div class="row">
    <div class="col-md-4">...</div>
    <!-- Смещение вправо на 4 колонки для md-устройств-->
    <div class="col-md-4 col-md-offset-4">...</div>
</div>
<div class="row">
    <div class="col-xs-6 col-sm-4">...</div>
    <div class="col-xs-6 col-sm-4">...</div>
    <!-- Смещение на 3 колонки для xs-устройств, отмена смещения для sm-устройств -->
    <div class="col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-0">...</div>
</div>

Изменение порядка следования

Вот так можно поменять местами блоки main и aside для md-устройств:

<div class="row">
    <!-- Смещаем блок main шириной 9 колонок вправо на 3 колонки -->
    <main class="col-md-9 col-md-push-3">...</main>
    <!-- Смещаем блок aside шириной 3 колонки влево на 9 колонок -->
    <aside class="col-md-3 col-md-pull-9">...</aside>
</div>

Служебные классы

Телефоны (<768px) Планшеты (≥768px) Ноутбуки (≥992px) Настольные (≥1200px)
.visible-xs-* Visible Hidden Hidden Hidden
.visible-sm-* Hidden Visible Hidden Hidden
.visible-md-* Hidden Hidden Visible Hidden
.visible-lg-* Hidden Hidden Hidden Visible
Группа классов Свойство display
.visible-*-block display: block;
.visible-*-inline display: inline;
.visible-*-inline-block display: inline-block;
Телефоны (<768px) Планшеты (≥768px) Ноутбуки (≥992px) Настольные (≥1200px)
.hidden-xs Hidden Visible Visible Visible
.hidden-sm Visible Hidden Visible Visible
.hidden-md Visible Visible Hidden Visible
.hidden-lg Visible Visible Visible Hidden

Быстрое выравнивание

<div class="clearfix">
    <div class="pull-left">...</div> <!-- Смещаем блок влево -->
    <div class="pull-right">...</div> <!-- Смещаем блок вправо -->
</div>
.pull-left {
    float: left !important;
}
.pull-right {
    float: right !important;
}

Вариант сетки без зазора между адаптивными блоками:

.row {
    margin-left: 0;
    margin-right: 0;
}
.row > [class^="col-"], .row > [class*=" col-"] {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

Стили, чтобы сразу видеть, какая сейчас ширина окна браузера:

.container > .row > *:not(.clearfix) {
    background: #eee;
    border: 1px solid #93f;
}
@media (min-width: 768px) {
    .container > .row > *:not(.clearfix) {
        border: 1px solid #09f;
    }
}
@media (min-width: 992px) {
    .container > .row > *:not(.clearfix) {
        border: 1px solid #6c6;
    }
}
@media (min-width: 1200px) {
    .container > .row > *:not(.clearfix) {
        border: 1px solid #f99;
    }
}

Поиск: CSS • HTML • Web-разработка • Верстка • Шаблон • Bootstrap • Сетка • Фреймворк • Шаблон сайта

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.