Laboratoire semaine 8¶
Consignes
Ce laboratoire vous permet de vous familiariser avec la librairie Bootstrap et :
- son approche mobile first
- l'utilisation de plusieurs classes et la spécificité
- son système de grille
- Ses classes flex
Il n'y a aucun travail à remettre à l'enseignant à la fin de ce laboratoire, mais il est toujours conseillé de le faire valider.
Durée: 3h, finir l'énoncé avant la prochaine période de laboratoire
Introduction à Bootstrap¶
Attention
L'exercice suivant se veut être une introduction à Bootstrap.
À plusieurs reprises, vous aurez à appliquer plusieurs classes sur une même balise.
Pour appliquer plusieurs classes sur une balise HTML, il faut les appeler une à la suite de l'autre avec un espace entre chaque.
Exemple :
<div class="container w-75 bg-dark text-center">
Pour ce laboratoire, vous aurez besoin de :
- Notes de cours de la semaine 8
- Documentation Bootstrap v5.3
Autres ressources intéressantes
Bootstrap Cheat Sheet avec exemples
Premiers pas avec Bootstrap¶
-
Créer un nouveau dossier de projet (laboratoire8) et y créer :
- page index.html
- sous-dossier pour les images
- sous-dossier pour le CSS personnalisé (il y en aura très peu)
-
Ajouter les styles Bootstrap CDN
Dans le head de index.html, ajouter la feuille de styles Bootstrap :
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.8/dist/css/bootstrap.min.css" integrity="sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB" crossorigin="anonymous">
-
Insérer le HTML du header suivant :
<header> <h1>Ma première page Bootstrap</h1> <p>Cette page est 100% réactive et mobile-first !</p> </header>
-
Ajouter les classes Bootstrap suivantes :
-
Sur la balise
<header>
:- doit être un contenant fluide (voir aide sur les containers : https://getbootstrap.com/docs/5.3/layout/containers/)
- appliquer une couleur de fond (voir aide sur les couleurs de fond : https://getbootstrap.com/docs/5.3/utilities/background/)
- centrer le texte (voir aide sur l'alignement de texte : https://getbootstrap.com/docs/5.3/utilities/text/)
- ajouter le padding tout autour de niveau 5 (voir aide sur l'espacement : https://getbootstrap.com/docs/5.3/utilities/spacing/)
-
Sur la balise
<p>
:- Ajouter la classe lead pour mettre le texte en évidence
Résultat :
-
-
Sous l'en-tête, ajouter la section de navigation suivante :
<nav> <div> <ul> <li> <a href="">Notes de cours</a> </li> <li> <a href="">Documentation Officielle</a> </li> <li> <a href="">Cheat Sheet</a> </li> </ul> </div> </nav>
- Dans les href, ajouter les liens qui se retrouvent plus haut dans cet énoncé.
Pour créer une barre de navigation réactive de base :
-
Sur la balise
<nav>
:- créer la barre de navigation avec
navbar
- indiquer que la barre doit s'étendre horizontalement à partir d'écrans moyens avec
navbar-expand-md
- appliquer une couleur de fond foncée couleurs de fond
- indiquer que la barre de menu est foncée avec
navbar-dark
pour que la couleur de texte s'ajuste automatiquement - rendre la barre collante au haut de l'écran Rendre collant avec Bootstrap
- créer la barre de navigation avec
-
Sur la balise
<div>
, créer un contenant fluide -
Sur la balise
<ul>
:- indiquer que ceci est la section de navigation de la barre de menu avec
navbar-nav
- indiquer que ce bloc doit prendre 100% de la largeur (voir aide sur la taille : https://getbootstrap.com/docs/5.3/utilities/sizing/)
- justifier les éléments en espace égale (voir aide sur le flex : https://getbootstrap.com/docs/5.3/utilities/flex/#justify-content)
- indiquer que ceci est la section de navigation de la barre de menu avec
-
Sur chaque
<li>
:- indiquer que c'est un item de navigation avec
nav-item
- centrer le texte (comme dans le header)
- indiquer que c'est un item de navigation avec
-
Sur chaque
<a>
:- indiquer que c'est un lien de navigation avec
nav-link
- indiquer que c'est un lien de navigation avec
Résultat :
-
Ajouter le bloc
<main>
suivant :<main> <div> <div> <h3>Contenu colonne 1</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> <div> <h3>Contenu colonne 2</h3> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ut placerat augue. Donec pharetra eleifend ex, et tincidunt sem accumsan ut. Interdum et malesuada fames ac ante ipsum primis in faucibus. Integer id nibh turpis. Quisque lorem lacus, egestas eget cursus nec, dapibus id purus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec volutpat, leo a pharetra tempus, urna metus hendrerit metus, ut tempus ex est id justo. </p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.</p> </div> <div> <h3>Contenu colonne 3</h3> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p> <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris...</p> </div> </div> </main>
-
Sur la balise
<main>
:- Créer un contenant (container) qui prend 100% jusqu'aux écrans moyens, puis prend une largeur fixe sur écrans médium et plus
- Ajouter une marge en Y (haut et bas) de niveau 5 avec
my-5
- Retirer le padding par défaut avec
p-0
-
Sur la première
<div>
:- Créer une rangée du système de grille (voir la documentation sur le système de grille : https://getbootstrap.com/docs/5.3/layout/grid/)
- appliquer une couleur de fond de Bootstrap (comme précédemment)
-
Sur la deuxième
<div>
(colonne 1) :- créer une colonne du système de grille qui prend 100% jusqu'aux écrans moyens, puis 3 fragments sur écrans médium et plus
- appliquer la couleur de fond
danger
-
Sur la troisième
<div>
(colonne 2) :- créer une colonne du système de grille qui prend 100% jusqu'aux écrans moyens, sans nombre de fragment maximum par la suite
- appliquer une bordure de couleur
primary
(voir la documentation sur les bordures: https://getbootstrap.com/docs/5.3/utilities/borders/)
-
Sur la quatrième
<div>
(colonne 3) :- créer une colonne du système de grille qui prend 100% jusqu'aux écrans moyens, puis 3 fragments de large
- aligner son contenu au bas de la cellule, grâce aux attributs flex (https://getbootstrap.com/docs/5.3/utilities/flex/#align-self)
Résultat sur écrans moyens :
Résultat sur petits écrans:
-
-
Toujours dans le main, copier-coller la ligne et les 3 colonnes (toutes les
<div>
).Modifier les classes Bootstrap des colonnes pour obtenir le résultat suivant :
Cliquer sur l'image pour la voir plus grande au besoin.
Assurez-vous que lorsque l'écran est petit, les 6 colonnes apparaissent une au-dessus de l'autre en prenant 100% de la largeur.
-
Télécharger une image d'au moins 1920px de large sur Pexels ou Pixabay
-
Dans le
<main>
, ajouter l'imageExemple :
<img src="img/paysage.jpg" alt="paysage">
- Sur cette image :
- ajouter des marges en y de 5
- rendre l'image fluide pour que sa taille s'ajuste au parent (voir la documentation sur les images réactives : https://getbootstrap.com/docs/5.3/content/images/ )
" Attention : Pour que l'image soit exactement de la même largeur que la grille créée plus haut, il faut enlever les marges en x des row de la grille...
Résultat :
- Sur cette image :
-
Ajouter le footer :
<footer> <p>Réussi !</p> </footer>
-
Ajouter un icône Fontawesome après le paragraphe
-
Sur le footer, utiliser les classes Bootstrap pour :
- indiquer que c'est un contenant fluide
- appliquer une couleur de fond
- centrer le texte
- padding de niveau 5
-
Sur le paragraphe :
- afficher ce texte en taille 1 avec
display-1
(voir documentation sur les typographies : https://getbootstrap.com/docs/5.3/content/typography/#display-headings)
- afficher ce texte en taille 1 avec
Résultat :
La taille de l'icône Fontawesome importe peu pour le moment (ici elle a été téléchargée en petite taille) - il n'y a pas de styles appliqués sur l'image pour le moment.
-
Ajouts Bootstrap¶
Maintenant que vous avez fait vos premiers pas avec Bootstrap, essayez les ajouts suivants :
-
Sur le nav, ajouter :
-
Positionner les items de menu à droite de la barre lorsqu'on est sur un écran large et + (sinon, aligné à gauche en colonne)
La navigation a donc 3 positions :
- en colonne sur petit écran
- espacé égal sur écrans médium
- positionné à droite sur grands écrans
-
-
Après l'image dans le
<main>
, ajouter un ensemble de 3 cartes à l'aide d'un card-groupVoir notes de cours sur les card-group
- Essayer d'alterner la position de l'image dans les cartes
- Appliquer une ombre sur le groupe (https://getbootstrap.com/docs/5.3/utilities/shadows/)
- Chaque carte doit contenir :
- Une image
- Un titre h3
- Une phrase dans une balise de paragraphe
Résultat :
-
Créer une superposition de cartes sur l'image du main :
- image overlay : https://getbootstrap.com/docs/5.3/components/card/#image-overlays
- Rendre l'overlay flexible et centrer son contenu avec les classes flex de Bootstrap
Résultat :
Ajout de CSS personnalisé¶
Bootstrap ne peut pas tout faire, surtout si on désire personnaliser notre site.
Nous allons donc personnaliser un peu notre site :
-
Créer un fichier CSS dans le bon dossier
-
Pour rester uniforme, nous allons uniquement utiliser des classes dans notre CSS :
-
Créer une classe à appliquer au
<header>
qui contient :- Une image de fond
-
Du padding haut et bas de 9rem (ou plus si nécessaire) pour l'agrandir
Attention de ne pas avoir de conflit : appliquer la classe personnalisée en dernier dans la liste de classes du header.
-
Créer une classe pour les items de menu lorsque la souris passe au-dessus :
- Changer la couleur de fond
- Appliquer une légère transformation pour les agrandir
- Ajouter la classe Bootstrap sur les éléments de menu pour :
- arrondir les coins des éléments de menu (lorsque la couleur de fond change, nous verrons des coins arrondis)
-
-
Créer une classe pour donner une largeur à l'icône utilisé dans le footer
Les largeurs en Bootstrap sont des multiples de 25%, ce qui serait trop gros.
On doit donc créer notre propre largeur dans notre CSS.
Validation du code¶
Ne pas oublier de valider votre code HTML
https://validator.w3.org/#validate_by_input
Questionnaire¶
Ce questionnaire compte pour 2% de la note finale de la session.