Rusztowanie Szablonu czyli Bootstrap Grid System

Czas czytania: 2 minut

Grid (czyli siatka) pełni w Bootstrapie wiele różnych funkcji.

Jedną z najważniejszych jest utrzymywanie porządku na stronie. Brzmi to może trochę enigmatycznie, ale kiedy się trochę pomyśli to człowiek zdaje sobie sprawę z kilku rzeczy:

  • bootstrap używa się by uzyskać responsywność strony
  • do uproszczenia pracy
  • do ujednolicenia szablonu strony

Jak wykorzystać Bootstrap?

I to właśnie uzyskujemy za pomocą gridu. Dzieli on stronę na odpowiednie strefy np. panel boczny i miejsce na treść. Robi to jednak w taki sposób by oba te pola dostosowały się do naszego monitora i urządzenia. Czyli na dużym ekranie oba pola będą obok siebie ale już na telefonie jedno znajdzie się pod drugim.

Grid w Twitter Bootstrap dzieli się na 12 pól.

.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
<div class="row grid-color">
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
<div class="col-md-1">.col-md-1</div>
</div>
<div class="row grid-color">
<div class="col-md-8">.col-md-8</div>
<div class="col-md-4">.col-md-4</div>
</div>
<div class="row grid-color">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4">.col-md-4</div>
</div>
<div class="row grid-color">
<div class="col-md-6">.col-md-6</div>
<div class="col-md-6">.col-md-6</div>
</div>

W przypadku responsywnych stron internetowych bardzo często nie stosuje się tradycyjnych tabel. Ich funkcja została zastąpiona przez odpowiednio skonfigurowanego grida.

W celu uzyskania pożądanego wyglądu strony należy odpowiednio dobrać elementy gridu np:

.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
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row grid-color">
<div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row grid-color">
<div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div><div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row grid-color">
<div class="col-xs-6">.col-xs-6</div><div class="col-xs-6">.col-xs-6</div>
</div>

Jak ustawiać kolumny

Jeśli nie wie się, który element można to policzyć w bardzo prosty sposób:
Powiedzmy, że chcemy użyć szerokości col-md-8
.col-md-8 -> width: 66.66666667% (niezbyt szeroki!)

To nie musimy szukać daleko jak dobrać 2, 3 kolumnę. Grid ma 12 pól tak więc:
Dla 2 – 12-8=4 (.col-md-4)
Dla 3 – może to być w takim razie 2/2, 1/3, 3/1

Ciekawostka (bootstrap grid offset):
Z odpowiednio dobranym gridem można uzyskiwać również takie efekty:

.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
.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
<div class="row grid-color">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
</div>
<div class="row grid-color">
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
</div>
<div class="row grid-color">
<div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
</div>
<div class="row grid-color">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
</div>
<div class="row grid-color">

<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
</div>
<div class="row grid-color">
<div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
</div>

Level 1: .col-sm-9

 

Level 2: .col-xs-8 .col-sm-6
Level 2: .col-xs-4 .col-sm-6
<div class="row grid-color">
<div class="col-sm-9">
Level 1: .col-sm-9

  <div class="row grid-color">
    <div class="col-xs-8 col-sm-6">Level 2: .col-xs-8 .col-sm-6</div>
    <div class="col-xs-4 col-sm-6">Level 2: .col-xs-4 .col-sm-6</div>
   </div>
</div>
</div>

.col-md-9 .col-md-push-3
.col-md-3 .col-md-pull-9
<div class="row grid-color">
<div class="col-md-9 col-md-push-3">.col-md-9 .col-md-push-3</div>
<div class="col-md-3 col-md-pull-9">.col-md-3 .col-md-pull-9</div>
</div>

Zwrócicie uwagę jak zachowują się elementy gridu gdy zwęża się stronę.