M3206 – TD #2

Intégration multimédia S3


Généralités

Bootstrap permet de faire une mise en page responsive facilement, qui s'adapte à la taille de l'écran.

Pour cela, Bootstrap utilise de requêtes de média et le module CSS Flexbox.

Le viewport

Bootstrap utilise une approche mobile-first : la page web est conçue pour être affichée sur un écran de téléphone par défaut.

Ensuite, on dit comment la page web doit s'adapter aux écrans plus grands.

Il faut ajouter cette ligne dans le head :


<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
						

Conteneurs

On écrit le code HTML dans un conteneur : un élément div avec la classe container ou container-fluid.


<div class="container">...</div>
<div class="container-fluid">...</div>
						
container
la largeur est fixe, mais elle s'adapte à l'écran
container-fluid
la largeur occupe tout l'écran

Points de rupture

Boostrap définit 4 points de rupture (breakpoints) pour les requêtes de média (media-queries) :

  • small (sm) : 576 px
  • medium (md) : 768 px
  • large (lg) : 992 px
  • extra-large (xl) : 1200 px

La grille (basique)

Mise en page avec une grille : chaque conteneur contient de lignes qui elles-mêmes contiennent des colonnes qui définissent des blocs de contenu.


<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
  <style>
    div {
      border: 1px solid black;
    }
  </style>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
</head>
<body>
  <div class="container">
    <div class="row">
      <div class="col">Ligne 1, colonne 1</div>
      <div class="col">Ligne 1, colonne 2</div>
    </div>
    <div class="row">
      <div class="col">Ligne 2, colonne 1</div>
      <div class="col">Ligne 2, colonne 2</div>
      <div class="col">Ligne 2, colonne 3</div>
    </div>
    <div class="row">
      <div class="col">Ligne 3, colonne 1</div>
      <div class="col">Ligne 3, colonne 2</div>
      <div class="col">Ligne 3, colonne 3</div>
      <div class="col">Ligne 3, colonne 4</div>
    </div>
  </div>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
</html>
						

Les classes pour les colonnes

La grille est basée sur 12 colonnes par ligne. On définit la largeur d'une colonne avec les classes .col-1, .col-2, ... .col-12.

Si on ne dit pas la taille (.col), la largeur est calculée en fonction de l'espace disponible.

Aussi, on peut adapter la largeur de la colonne en fonction du contenu avec la classe .col-auto

Exercice #1

Faire une grille en Bootstrap qui contient :

  • Ligne 1 : trois colonnes de largeur 4, 5 et 3.
  • Ligne 2 : deux colonnes de largeur 2 et 10.
  • Ligne 3 : cinq colonnes de largeur pareille, sauf pour la colonne centrale, qui s'adapte à son contenu.

Ajoutez du texte dans chaque colonne. Utilisez la règle CSS div { border: 1px solid black; } pour bien voir les colonnes.

Le fichier doit s'appeler m3206-td2/exo1/index.html

On fait varier la largeur d'une colonne en fonction de la taille de l'écran avec les classes .col-sm-X, .col-md-X, .col-lg-X, et .col-xl-X, où X est un entier entre 1 et 12.

  • .col-sm-X : écran petit (≥ 576 px) ou plus
  • .col-md-X : écran moyen (≥ 768 px) ou plus
  • .col-lg-X : écran grand (≥ 992 px) ou plus
  • .col-xl-X : écran très grand (≥ 1200 px) ou plus

S'il n'y a pas de point de rupture, la taille de la colonne s'applique à tous les écrans.

Exercice #2

Faire une grille en Bootstrap qui contient :

  • Ligne 1, colonne 1 : largeur 6 par défaut, et 4 pour un écran xl
  • Ligne 1, colonne 2 : largeur 6 par défaut, et 8 pour un écran xl
  • Ligne 2, colonne 1 : largeur 4 pour les écrans sm, 7 pour les écrans lg et 6 pour les écrans xl
  • Ligne 2, colonne 2 : largeur 8 pour les écrans sm, 5 pour les écrans lg et 6 pour les écrans xl

Lignes incomplètes / débordantes

Dans les exemples précédents, la somme des colonnes dans chaque colonne faisait 12.

Si la somme est < 12, les colonnes sont calées par défaut à gauche.

Par contre, si la somme des colonnes est plus grande que 12, alors les colonnes "en trop" passent à la ligne suivante.

Exercice #3

Modifier l'exercice #1 pour avoir une ligne normale, une ligne incomplète et une ligne débordante.

La grille (avancée)

Alignement vertical

Il y a 3 façons d'aligner verticalement les colonnes dans une ligne :

  • .align-items-start
  • .align-items-center
  • .align-items-end

Ces trois classes s'appliquent aux lignes.

Alignement horizontal

Il y a 5 façons d'aligner horizontalement les colonnes dans une ligne (s'il y a de la place) :

  • .justify-content-start
  • .justify-content-center
  • .justify-content-end
  • .justify-content-around
  • .justify-content-between

Ces trois classes s'appliquent aux lignes.

Exercice #4

Faire une grille qui utilise tous les types d'alignements possibles.

Ajouter du texte dans les colonnes.

Colonnes décalées

La classe .offset-X ajoute X colonnes vides à gauche d'une colonne.

On ajoute de points de rupture avec .offset-sm-X, .offset-md-X, .offset-lg-X et .offset-xl-X.

On utilise aussi les classes .mr-auto (margin right) et .ml-auto (margin left) pour séparer les colonnes.

Exercice #5

Faire une grille qui utilise les classes .offset-3, .offset-5, .offset-lg-3 et .offset-lg-5.

Ajouter du texte dans les colonnes.

Ordonner les colonnes

Les classes .order-X réordonnent les colonnes en fonction de l'index X (au lieu de leur ordre dans le HTML).

Elles ont de versions avec les points de rupture : .order-sm-X, .order-md-X, .order-lg-X et .order-xl-X.

Exercice #6

Faire une grille avec 1 ligne et 3 colonnes telle que :

  • Pour un petit écran, les colonnes contiennent A, B, et C
  • Pour un écran moyen, les colonnes contiennent B, C, et A
  • Pour un écran très grand, les colonnes contiennent C, A et B

Ressources

  • Documentation officielle [url]
  • w3schools [url]
  • Chapitre 3 de «Bootstrap 4 pour l'intégrateur web», par Christophe AUBRY [url] [fnac]

À rendre (aujourd'hui)

Envoyer par AMeTICE le fichier m3206-td2.zip contenant vos exercices dans «Exercices à rendre du TD 2/4».

Soumettre une bonne (!) question sur ce qu'on a vu aujourd'hui dans «Question à rendre du TD 2/4»