OpenClassrooms devient une université américaine accréditée.
Découvrez ce que cela change pour vousTable des matières
- Partie 1
Identifiez les cas d’usage de Bootstrap
- Partie 2
Créez des mises en page responsives
- Partie 3
Affichez du contenu avec les composants d'interface utilisateur
- Partie 4
Ajoutez de l'interactivité à votre site
- Partie 5
Créez des fonctionnalités et des thèmes personnalisés
Ajoutez des composants interactifs

Bravo ! Votre portfolio commence à prendre forme, les titres sont mis en page, nous avons ajouté des composants de Bootstrap 5, mis en place notre navigation. Il est maintenant temps de voir comment rendre notre site plus interactif.
#Affichez des informations complémentaires au clic sur un bouton grâce au Offcanvas
En fin de partie 3, nous avons vu comment afficher nos projets grâce au système de cartes de Bootstrap 5. Voyons maintenant comment le offcanvas nous permet de donner plus d'informations sur nos projets, sans venir alourdir notre page.

Comme d’habitude, rendez-vous sur la documentation de Bootstrap 5 pour voir comment fonctionne notre composant.
class="offcanvas offcanvas-start" tabindex="-1" id="offcanvas" aria-labelledby="offcanvasLabel"
class="offcanvas-header"
class="offcanvas-title" id="offcanvasLabel"Offcanvas
type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"
class="offcanvas-body"
Content for the offcanvas goes here. You can place just about any Bootstrap component or custom elements here.
En observant la structure du composant, on remarque qu’il fonctionne un peu de la même manière que les card :
Une
divglobale avec une classe qui porte le nom du composant.Cette div porte aussi une classe
offcanvas-start; on se souvient que-startréfère à l’alignement dans le sens de lecture du site, ici de gauche à droite.On observe également un
idqui nous permettra de cibler notre élément.Ensuite, nous avons deux
divsœurs, l’une portant la classe.offcanvas-headeret l’autre.offcanvas-body.
Pour notre cas précis, nous souhaitons mettre en place un offcanvas qui sorte du bas de page. En parcourant un peu la documentation, on voit qu’il existe bien une variante qui part d’en bas.
class="btn btn-primary" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom"Toggle bottom offcanvas
class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel"
class="offcanvas-header"
class="offcanvas-title" id="offcanvasBottomLabel"Offcanvas bottom
type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"
class="offcanvas-body small"
...
Dans l’exemple ci-dessus, nous retrouvons la structure que nous venons de détailler plus haut, mais nous voyons aussi l’architecture du bouton déclencheur. Et normalement, il y a des attributs qui doivent vous poser problème : les attributs data.
#Revenons rapidement sur l’attribut data
L’attribut data permet essentiellement l’échange de données entre l’HTML et le DOM qui, lui, est manipulable en JS.
Concrètement, l’attribut data peut être personnalisé comme on le souhaite suivant cette structure : data-{mon-text-perso} . Bootstrap 5 a choisi comme sémantique data-bs-{utilité}, bs pour Bootstrap, et l’utilité représente l’usage auquel il est lié en JS.
Dans notre exemple, data-bs-toggle permet au JS de Bootstrap d’identifier le bouton comme étant le déclencheur du composant offcanvas identifié par son id que l’on renseigne dans le deuxième attribut data data-bs-target.
L’intérêt de ce système, c’est qu’il nous permet d’utiliser des composants qui fonctionnent grâce au JavaScript, en restant uniquement dans le HTML.
#À vous de jouer !
Maintenant que vous avez bien compris le fonctionnement du composant, il est temps de l’ajouter dans votre portfolio.
Ajoutez un
offcanvasdans chacune de vos cartes de projet.Le
offcanvasdevra sortir du bas de la page.Utilisez les classes utilitaires pour faire en sorte que vos
offcanvasprennent toute la hauteur de la page.
Une fois que vous avez effectué ces modifications, suivez-moi dans le screencast ci-dessous pour comparer votre travail avec le mien !
On ajoute notre offcanvas dans le body de nos cartes, en veillant bien à modifier les id et les titres pour correspondre à chaque projet.
Les plus observateurs d’entre vous remarqueront qu’une classe a été ajoutée à notre div.offcanvas.offcanvas-bottom.h-100. C’est une classe utilitaire permettant de mettre notre offcanvas en height: 100% afin qu’il prenne toute la hauteur de l’écran une fois ouvert.
#Ajoutez un carrousel d’images pour illustrer vos projets
Ce que l’on appelle communément un "carrousel", c’est un slider d’images ou de vidéos qui défilent sur un intervalle donné. On le retrouve souvent dans les headers de pages pour mettre en avant des images accompagnées d’un message.
Celui de Bootstrap est le format le plus populaire, un encart fixe affichant les images les unes après les autres :

Comme à chaque fois, commençons par nous rendre sur la documentation Bootstrap 5 pour voir comment fonctionne le carrousel : on clique sur “components” puis “carousel”.
La première chose que l’on voit, c’est que le carrousel fonctionne en CSS et JavaScript, mais Bootstrap 5 a fait en sorte qu’il soit utilisable sans écrire une seule ligne de JS !
La deuxième chose à savoir, c’est que le carrousel ne normalise pas la taille des images. Si on veut avoir un carrousel tout beau tout propre, il faudra soit ajouter un peu de CSS, soit travailler nos images en amont pour qu’elles aient la même taille (je préconise cette deuxième option qui a plus de sens d’un point de vue optimisation de votre site).
Étudions un peu l’exemple de base du carrousel de Bootstrap 5 :
id="carouselExampleSlidesOnly" class="carousel slide" data-bs-ride="carousel"
class="carousel-inner"
class="carousel-item active"
src="..." class="d-block w-100" alt="..."
class="carousel-item"
src="..." class="d-block w-100" alt="..."
class="carousel-item"
src="..." class="d-block w-100" alt="..."
On observe plusieurs choses :
Il y a une architecture d’éléments et de classes à respecter pour que ça fonctionne.
Ils utilisent des classes utilitaires sur leurs images, c’est donc compatible ensemble (comme les barres de progression).
Il y a un
idsur l’élément parent principal.On retrouve également un attribut
datapour faire le lien avec le JS.
Qu’est-ce que tout ça veut dire ?
Concernant l’architecture, ce n’est pas bien sorcier :
une
divparent qui prend les classes.carousel .slide;une
divenfant avec la classe.carousel-inner(littéralement "intérieur du carrousel", qui sert à délimiter les slides) ;enfin, autant de
divenfants avec la classecarousel-itemque nous souhaitons de slides dans notre carousel.
#À vous de jouer !
Votre mission pour ce chapitre est de créer les carrousels pour chacun de vos projets :
Les carrousels devront faire 100 % de la hauteur du
bodyde votreoffcanvas.Les slides devront tourner automatiquement toutes les 3 secondes.
Les slides devront avoir un titre et une petite description (en faux texte).
Pour générer des images différentes à l’aide de picsum.photo, vous utiliserez le schéma d’URL suivant : https://picsum.photos/1920/1080?random=1 (remplacer le dernier 1 pour avoir une autre image).
Le carrousel devra avoir des flèches à gauche et à droite pour faire passer les slides.
Une fois que vous avez effectué ces modifications, suivez-moi dans le screencast ci-dessous pour comparer votre travail avec le mien !
#En résumé
Les attributs
data-*servent à échanger des données entre le HTML et le JS en passant par le DOM (ensemble des éléments HTML qui structurent une page) qui est lisible en JS.Il est possible d’ajouter du contenu non visible par défaut sur votre page notamment (mais pas seulement) avec le composant
offcanvas.Bootstrap offre la possibilité d'ajouter des carrousels à vos pages.
Il est primordial d’utiliser des
iduniques pour vos composants qui fonctionnent en JS, afin d’éviter les erreurs de lecture du code par le navigateur.
Maintenant que vous avez appris à ajouter de l'interactivité, vous êtes prêt à apprendre à utiliser Bootstrap 5 pour permettre à vos visiteurs de vous contacter à l'aide de formulaires. Rendez-vous au prochain chapitre !
- Formations jusqu’à 100 % financées
- Date de début flexible
- Projets professionnalisants
- Mentorat individuel