Bootstrap построен на динамической 12-колонной сетке. Мы так же включили функционал фиксированной и плавающей ширины колонок в шаблоне.
Bootstrap использует HTML-элементы и CSS-свойства для которых необходимо использовать HTML5 doctype. Убедитесь в использовании HTML5 doctype на каждой за'Bootstrap'енной странице Вашего проекта.
<!DOCTYPE html> <html lang="en"> ... </html>
В файле scaffolding.less, мы установили основные стили, типографию (стили и размеры шрифтов), и стили ссылок. Конкретнее:
background-color: white; для body@baseFontFamily, @baseFontSize, и @baseLineHeight атрибуты как основные для типографии@linkColor и применили подчеркивание только для селектора :hoverВ Bootstrap 2, мы применили ставший обыденным сброс браузерных дефолтов с помощью Normalize.css, проект от Nicolas Gallagher (Николаса Галлагера) так же мы включили все плюсы от HTML5 Boilerplate.
Сброс дефолтных стилей находится в reset.less, мы многое изменили для большей совместимости.
Основная сетка макета представлена как часть Bootstrap'а в 940px-ширины в 12-колонок.
Так же представленны 4 динамических варианта для различных девайсов и разрешений экрана: телефон, наладонник портретная, наладонник горизонтальная он же маленький монитор, и большой широкоэкранный монитор.
<div class="row"> <div class="span4">...</div> <div class="span8">...</div> </div>
Из примера видно, основная сетка макета может быть создана с помощью двух "columns", в итоге число "spanning" или span(x)'ов равняется 12 основным колонкам которые определенны как часть основной сетки.
<div class="row"> <div class="span4">...</div> <div class="span4 offset4">...</div> </div>
Со статическими колонками (не плавающими) в Bootstrap, легко можно создать вложенные колонки. Для вложения одной группы колон в другую колонку, просто добавьте новую .row (строку) и включите в неё .span(x) колонки.
Вложенные колонки не могут превышать размер родительской колонны т.е. в .span5 можно вложить пять .span1 или два .span2 и один .span1.
Смотрите пример ниже.
<div class="row">
<div class="span12">
Level 1 of column
<div class="row">
<div class="span6">Level 2</div>
<div class="span6">Level 2</div>
</div>
</div>
</div>
Плавающая колонка использует проценты в качестве ширины, в отличии от фиксированного количества пикселей. Плавающие колонки имеют ту же динамичность что и фиксированные колонки, обеспечивая одинаковую пропорцию на различных устройствах и дисплеях.
Сделать плавающую строку можно просто изменив .row на .row-fluid. Колонки останутся прежними, это позволяет с невероятной легкостью переключаться между фиксированным и плавающим шаблоном дизайна.
<div class="row-fluid"> <div class="span4">...</div> <div class="span8">...</div> </div>
Вложение в плавающую сетку немного отличается: номер и сумма span(x)'ов не должна удовлетворять размер родительской колонки. Так как вложенные колонны на каждом уровне вложения занимают 100% родительской колонки.
<div class="row-fluid">
<div class="span12">
Level 1 of column
<div class="row-fluid">
<div class="span6">Level 2</div>
<div class="span6">Level 2</div>
</div>
</div>
</div>
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
@gridColumns |
12 | Количество колонок |
@gridColumnWidth |
60px | Ширина каждой колонки |
@gridGutterWidth |
20px | Расстояние (отступ) между колонками |
Несколько переменных описанных выше и встроенных в Bootstrap позволят Вам с легкостью изменить настройки сетки, по умолчанию (940px). Все переменные связанные с сеткой шаблона находятся в variables.less.
Изменение сетки шаблона связанны с изменением дерева переменных @grid* и должны быть перекомпилированны в Bootstrap.Изменяйте переменные сетки шаблона в variables.less и используйте четыре способа перекомпилировать less. Если Вы добавляете колонки в сетку шаблона, убедитесь что добавили CSS для новых колонок в grid.less.
Изменение сетки макета работает только на дефолтном уровне, когда ширина составляет 940px. Для изменений в динамической сетке Bootstrap'а, Вам так же необходимо изменить сетку шаблона в responsive.less.
Основной и простой макет с шириной в 940px, отцентрованное расположение элементов для простого сайта с основным родительским <div class="container">.
<body>
<div class="container">
...
</div>
</body>
<div class="container-fluid"> предоставляет плавающую структуру страницы, min- и max-widths, с левым сайдбаром для меню. Этот макет отлично подходит для текстов и приложений.
<div class="container-fluid">
<div class="row-fluid">
<div class="span2">
<!--Sidebar content-->
</div>
<div class="span10">
<!--Body content-->
</div>
</div>
</div>

Медиа-запросы позволяют изменять CSS "на лету" основываясь на условиях—отношений, ширины, типа дисплея, и т.д.—но обычно используется для изменения min-width и max-width.
Используйте динамические возможности Медиа-запросов, только для создания мобильной версии сайта. Для крупных проектов мы рекомендуем создавать отдельную версию дизайна и сайта.
Bootstrap поддерживает несколько медиа-запросов в одном файле, что позволяет сделать Ваш проект работающим на различных устройствах и разрешениях экрана. Что включено:
| Категория | Ширина шаблона | Ширина колонок | Отступ колонок |
|---|---|---|---|
| Смартфоны | 480px и меньше | Плавающие колонки без фиксированной ширины | |
| Наладонники | 767px и меньше | Плавающие колонки без фиксированной ширины | |
| Портретная наладонники | 768px и больше | 42px | 20px |
| По умолчанию | 980px и больше | 60px | 20px |
| Большие дисплеи | 1200px и больше | 70px | 30px |
Для корректного отображения и работы динамических медиа-запросов, необходимо включить viewport meta - тег.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Bootstrap не включает в себя данные медиа-запросы по умолчанию, но понимание и их добавление - очень простой процесс. У Вас есть несколько путей для добавления динамических возможностей Bootstrap'a:
Почему бы не включить этот функционал в Bootstrap по умолчанию? Правда в том что не все элементы должны быть динамическими. Вместо того чтобы разработчики удаляли данный функционал из Bootstrap, мы решили что логичнее будет дать возможность включать его при необходимости.
// Ландшафтная телефоны
@media (max-width: 480px) { ... }
// От ландшафтная телефоны, до потретной наладонники
@media (max-width: 767px) { ... }
// От портретная наладонники до ландшафтной и настольных дисплеев
@media (min-width: 768px) and (max-width: 979px) { ... }
// Большой дисплей
@media (min-width: 1200px) { ... }
Для быстрой разработки под мобильные платформы, используйте эти классы для показа или скрытия контента в зависимости от устройства.
Использование данного функционала позволяет не создавать разные версии одного и того же сайта под разные устройства. Вместо этого можно управлять показом и скрытием контента в зависимости от устройства.
Для примера, Вы можете показать <select> элемент для навигации в мобильном устройстве, но скрыть на десктопах и наладонниках (планшетах).
Показанная здесь таблица классов обеспечивает динамику для различных устройств и их работу в связке с сеткой макета и медиа-запросами (разделено по устройствам). Данные классы находятся в responsive.less.
| Класс | Телефоны 480px и меньше | Наладонники (Планшеты) 767px и меньше | Ноутбуки и десктопы 768px и больше |
|---|---|---|---|
.visible-phone |
Виден | Скрыто | Скрыто |
.visible-tablet |
Скрыто | Виден | Скрыто |
.visible-desktop |
Скрыто | Скрыто | Виден |
.hidden-phone |
Скрыто | Виден | Виден |
.hidden-tablet |
Виден | Скрыто | Виден |
.hidden-desktop |
Виден | Виден | Скрыто |
Измените размер окна или откройте данную страницу на мобильном устройстве для тестирование вышеуказанных классов в действии.
Зеленая отметка означает что блок виден в текущем окне шаблона.
Здесь зеленая отметка блока означает что он скрыт в текущем окне шаблона.