В Twitter Bootstrap 3 модульная сетка состоит из 12 колонок, которые при фиксированной верстке занимают 1170 пикселей. Сетка изначально является адаптивной/отзывчивой (responsive) и ориентированна на мобильные устройства. Если во второй версии бутстрап это было дополнительной опцией, в третьей версии это является базовым.
В третьей версии появились классы, для верстки под различные типы экранов. Если выразить двумя словами, то эти классы определяют правило: Если ширина экрана меньше заданного классом диапазона — то блоки будут ложится друг за другом и иметь ширину 100%. Если ширина экрана больше — блок будет просто масштабироваться.
.col-xc
< 768px (мобильные устройства).
.col-sm
768px — 992px (планшеты).
.col-md
992px — 1200px (декстопные компьютеры).
.col-lg
— > 1200px (для устройств с большим экраном).
Пример работы с модульной сеткой с Twitter Bootstrap 3.
Реализация:
<header> <div class="container"> <div class="row"> <div class="col-md-12"> header </div> </div> </div> </header> <nav> <div class="container"> <div class="row"> <div class="col-md-12"> menu </div> </div> </div> </nav> <div class="main"> <div class="container"> <div class="row"> <div class="col-md-8"> <article> page-content </article> </div> <div class="col-md-4"> <aside> sidebar </aside> </div> </div> </div> </div> <footer> <div class="container"> <div class="row"> <div class="col-md-12"> footer </div> </div> </div> </footer>
В данном примере хидер (header), блок меню (nav) и футер (footer) будут растянуты на всю ширину сетки (на все 12 колонок, 1170px ширины родительского div.container). Средний блок (div.main) будет разделен на две части: контентную (article) и сайдбар (aside) которые будут занимать 8 и 4 колонки сетки (из 8+4=12), соответственно.
Если попытаться объяснить механизм работы сетки (bootstrap grid) на пальцах, то:
1. Ширина колонок будет преобразована в проценты и будет масштабироваться на широких экранах (класс выше col-lg-8 можно опустить при этом будет происходить scaling/пересчет).
2. На экранах ширина которых ниже заданного классом col-md-* диапазона (<992px) — колонки автоматически будут помещены одна-под-одну и растянуты на 100% ширины.
Если мы изменим класс col-md-8
на col-lg-8
— колонки будут помещены друг-под-другом раньше: при ширине экрана ниже <1200px. А при изменении класса col-md-8 на col-sm-8
— колонки будут помещены друг-под-другом при ширине экрана ниже 768px.
Таким образом мы можем манипулировать способом отображения блоков при уменьшении экрана до определенных размеров (отображении сайта на определенных устройствах).