logo

Systéme de grille dans "bootstrap"

On doit commencer par créer une "div" global à laquelle on assignera la class "contenair" ou "contenair-fluid", la première se centre au milieu de la page et la seconde occupe tout l'espace. Cette classe comporte deja un marging de 15 px de chaque coté et a aussi une taille prédéfinie suivant le style de colonne choisie.
Puis une "div" avec la classe "row" et ensuite à l'intérieur de celle-ci les "div" bloc avec les classes de colonne.

Chaque block représente 12 colonnes donc en cas d'imbrication chaque bloc généré a un quota de 12 colonnes, on verra ça plus tard.

les blocs se déplacent en se positionnant les uns sous les autres suivant les tailles paliers correspondant aux classes données.

xs = x-small (smartphone < 768px ⇒ automatique)
sm = small(tablette ≥ 768 ⇒ 750px)
md = medium (écran ≥ 992px ⇒ 970px)
lg = large (écran ≥ 1200px ⇒ 1170px)

01  <div class=" contenair ">
02    <div class=" row ">
03      <div class=" col-xs-X / col-sm-X / col-md-X / col-lg-X ">
04        Contenu
05      </div>
06    </div>
07  </div>

* Pour les gens qui n'aurez pas compris le "X" représente le nombre de colonnes pouvant allez de 1 à 12,
et bien sûr dans la classe on indique un seule nom de colonne identique.

Exemple avec 1 rangée

Ici une seul rangée avec deux éléments qui occupent tout l'espace

col-lg-4 / 4 colonnes
col-lg-8 / 8 colonnes
01  <div class=" contenair ">
02    <div class=" row ">
03      <div class=" col-lg-4 "> Contenu </div>
04      <div class=" col-lg-8 "> Contenu </div>
05    </div>
06  </div>

Exemple avec 3 rangées

On peut voir ici que le bloc possédant la plus grande hauteur repousse la "row" suivante.
Mais que les autres blocs de la même "row" ne s'adaptent pas.

col-lg-1 / 1 colonnes
col-lg-2 / 2 colonnes
col-lg-3 / 3 colonnes
col-lg-6 / 6 colonnes
col-lg-12 / 12 colonnes
col-lg-4 / 4 colonnes
col-lg-8 / 8 colonnes
01  <div class=" contenair ">
02    <div class=" row ">
03      <div class=" col-lg-1 "> Contenu </div>
04      <div class=" col-lg-2 "> Contenu </div>
05      <div class=" col-lg-3 "> Contenu </div>
06      <div class=" col-lg-6 "> Contenu </div>
07    </div>
08    <div class=" row ">
09      <div class=" col-lg-12 "> Contenu </div>
10    </div>
11    <div class=" row ">
12      <div class=" col-lg-4 "> Contenu </div>
13      <div class=" col-lg-8 "> Contenu </div>
14    </div>
15  </div>

Saut de colonnes

On peut aussi sauter des colonnes en rajoutant dans la classe l'élément "offset"

col-lg-offset-3 col-lg-6 col-lg-offset-3 / 6 colonnes
col-lg-3 / 3 colonnes
col-lg-offset-6 col-lg-3 / 3 colonnes
2 colonnes
4 colonnes
2 colonnes
01  <div class=" contenair ">
02    <div class=" row ">
03      <div class=" col-lg-offset-3 col-lg-6 col-lg-offset-3">
04         Contenu
05      </div>
06    </div>
07    <div class=" row ">
08      <div class=" col-lg-3 "> Contenu </div>
09      <div class=" col-lg-offset-6 col-lg-3 "> Contenu </div>
10    </div>
11    <div class=" row ">
12      <div class=" col-lg-2 col-lg-offset-1 "> Contenu </div>
13      <div class=" col-lg-4 col-lg-offset-2 "> Contenu </div>
14      <div class=" col-lg-2 col-lg-offset-1 "> Contenu </div>
15    </div>
16  </div>

Si vous regarder bien le code et le schéma, vous pourrez voir qu'il y a plusieurs choses incompréhensibles.

    -  La première vous l'aurrez peut être remarquer, c'est le fait de trouver deux fois la même class dans la balise en ligne 03. Donc vous comprendrez bien que ce n'est pas possible et de ce fait ces doublons ne fonctionnent pas et du fait de l'absence de colonne à droite et tout à fait normal.
    -  La deuxième vient du positionement des blocs par rapport au code écrit en ligne 11, 12, 13. On peut visualiser l'inversement de la position des blocs par rapport au html écrit. La position de l'offset qu'il soit ecrit en première classe ou en seconde est toujours appliquée la première.

Pousser ou tirer les colonnes

Avec les élément "push" et "pull" on peut pousser ou tirer les colonnes.
  - "PUSH" permet de pousser les colonnes vers la droite.
  - "PULL" permet de tirer les colonnes vers la gauche.

col-lg-4 col-lg-push-4
col-lg-offset-8 col-lg-4 col-lg-pull-2
bleu col-lg-6 col-lg-push-6
vert col-lg-6 col-lg-pull-6
bleu col-lg-3 col-lg-push-8
vert col-lg-3 col-lg-pull-2
01  <div class=" contenair ">
02    <div class=" row ">
03      <div class=" bleu col-lg-4 col-lg-push-4"> Contenu </div>
04    </div>
05    <div class=" row ">
06      <div class=" vert col-lg-offset-8 col-lg-4 col-lg-pull-2">
07        Contenu
08      </div>
09    </div>
10    <div class=" row ">
11      <div class=" bleu col-lg-6 col-lg-push-6 "> Contenu </div>
12      <div class=" vert col-lg-6 col-lg-pull-6 "> Contenu </div>
13    </div>
14    <div class=" row ">
15      <div class=" bleu col-lg-3 col-lg-push-8 "> Contenu </div>
16      <div class=" vert col-lg-3 col-lg-pull-2 "> Contenu </div>
17    </div>
18  </div>

Etudions un peut les mouvements de bloc:

    -  Premiere ligne: On peut voir l'action du "push" qui repousse tout simplement le bloc de 4 colonnes.

    -  Deuxième ligne: Cette fois on ce sert du "pull" qui tire tout simplement le bloc de 2 colonnes.

    -  Troisième ligne: j'ai créé 2 bloc identique de 6 colonnes, un premier bleu avec la commande "col-lg-push-6" ce qui pousse mon bloc de 6 colonnes et un second vert avec la commande "col-lg-pull-6" ce qui tire la commande de 6 colonnes et sur le rendu visuel nous voyons qu'il sont inversé.

    -  Quatrième ligne, Ca ce complique un peut, j'ai donc créé deux bloc bleu et vert de 3 colonnes le premier pousser de 8 colonnes ce qui est égal à 11 donc il vient se caler à 1 colonne de la fin de la rangée et un second tirer de 2 colonnes ce qui le ramène a 1 colonnes du début de la rangée.

Si vous reprenner le code et que vous donner la valeur 0 au "push" et "pull" vous constaerer tout simplement que les actions demander démarre toujour de la position initiale du bloc concerné.

L'imbrication

On peut imbriquer plusieurs niveaux mais attention à ne pas vous y perdre

Niveau 1 avec 12 colonnes
Niveau 2 avec 8 colonnes
Niveau 3 avec 4 colonnes
Niveau 3 avec 6 colonnes
Niveau 4 avec 3 colonnes
Niveau 4 avec 5 colonnes
Niveau 2 avec 4 colonnes
01  <div class=" contenair ">
02    <div class=" row ">
03      <div class=" col-md-12 ">  Niveau 1
04        <div class=" row ">
05          <div class=" col-md-8 ">  Niveau 2
06            <div class=" row ">
07              <div class=" col-md-4 ">  Niveau 3  </div>
08              <div class=" col-md-6 ">  Niveau 3
09                <div class=" row ">
10                   <div class="col-md-offset-1 col-md-3 ">  Niveau 4  </div>
11                   <div class="col-md-offset-1 col-md-5 ">  Niveau 4  </div>
12                </div>
13              </div>
14            </div>
15          </div>
16          <div class=" col-md-8 ">  Niveau 2  </div>
17        </div>
18    </div>
19  </div>

Exemple de page

Voici un exemple concret de positionnement d'une page

Entete
Section
article
article
article
Pied de page
01  <!DOCTYPE html>
02  <html>
03    <head>
04      < href=" adresse liens bootstrap " rel=" stylesheet ">
05      < href=" adresse liens css si besoin " rel=" stylesheet ">
06    </head>
07    <body>
08      <header class" row ">
09        <div class=" col-sm-12 "> Entete </div>
10      </header>
11      <div class=" row ">
12        <nav class=" col-sm-2 "> Menu </nav>
13        <section class=" col-sm-10 "> Section
14          <div class=" row ">
15            <article class=" col-md-10 "> article </article>
16            <aside class=" col-md-2 "> aside </aside>
17          </div>
18          <div class=" row ">
19            <article class=" col-md-10 "> article </article>
20            <aside class=" col-md-2 "> Aside </aside>
21          </div>
22        </footer>
23      </div>
24      <footer class=" row ">
25        <div class=" col-sm-12 "> Pied de page </div>
26      </footer>
27    </body>
28  </html>

Nous pouvons voir dans cet exemple que l'on retrouve plusieurs tailles de bloc.

    -  Le header, le menu et le footer en "sm".

    -  Le contenu en "md".

Si on réduit l'écran nous verrons le système de mouvement de bloc qui se déplace au fur et à mesure des tailles palier.

On visualise bien le mouvement des blocs et le fait que seul le contenu s'est empiler en passant à la taille tablette et ensuite la totalité des block s'empile en franchissant la limite smartphone.