Aller au contenu

Bootstrap 3/3

Dans ce cours, nous allons explorer les différentes composantes nécessitants du JavaScript avec Bootstrap.

Installation du JavaScript

Pour utiliser les composantes JavaScript de Bootstrap, veuillez ajouter la librairie suivante dans le <head> de votre HTML :

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>

Alerte

https://getbootstrap.com/docs/5.3/components/alerts/

Une alerte permet d’afficher des messages avec des styles prédéfinis et des options de fermeture.

Il y a deux types d'alertes. Une simple sans interaction possible, l'autre est révocable.

HTML - Alerte simple
<div class="alert alert-success fade show" role="alert">
  Félicitations 🥳
</div>
HTML - Alerte révocable
<div class="alert alert-warning alert-dismissible fade show" role="alert">
  Message plutôt important !
  <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>

Pour l'alerte révocable, il faut ajouter la classe .alert-dismissible et la balise <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> pour fermer l'alerte.

https://getbootstrap.com/docs/5.3/components/modal

Un « modal » est une fenêtre (popup) qui apparaît au-dessus du contenu principal.

HTML
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  Ouvrir Modal
</button>

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <!-- Entête -->
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Titre du Modal</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <!-- Corps -->
      <div class="modal-body">
        Message super important
      </div>
      <!-- Pied -->
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Fermer</button>
        <button type="button" class="btn btn-primary">Ok merci</button>
      </div>

    </div>
  </div>
</div>

Liste déroulante

https://getbootstrap.com/docs/5.3/components/dropdowns

Les listes déroulantes (dropdown) permettent d’afficher une liste d’options lors du clic sur un bouton.

HTML
<div class="dropdown">
  <button class="btn btn-primary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    <li><a class="dropdown-item" href="#">Action</a></li>
    <li><a class="dropdown-item" href="#">Autre action</a></li>
    <li><a class="dropdown-item" href="#">Quelque chose d'autre</a></li>
  </ul>
</div>

Accordion

https://getbootstrap.com/docs/5.3/components/accordion/

L’accordion permet d’afficher et de masquer du contenu lié à une section spécifique.

HTML
<div class="accordion" id="accordionExample">

  <div class="accordion-item">
    <h2 class="accordion-header" id="headingOne">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
        Accordéon 1
      </button>
    </h2>
    <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        Contenu de l'accordéon 1.
      </div>
    </div>
  </div>

  <div class="accordion-item">
    <h2 class="accordion-header" id="headingTwo">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
        Accordéon 2
      </button>
    </h2>
    <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        Contenu de l'accordéon 2.
      </div>
    </div>
  </div>

</div>

Plusieurs attributs sont nécessaires

Dans l'exemple ci-haut, observez d'abord que le contenant possède un id (accordionExample). Ce id sera utilisé dans les attributs data-bs-parent.

Ensuite, chaque élément d'accordéon doit avoir son propre identifiant. Observez particulièrement le premier élément, puis ses id (headingOne et collapseOne). Analysez comment ils sont utilisés.

Toast 🍞

https://getbootstrap.com/docs/5.3/components/toasts/

Les toasts sont des messages temporaires et révocables pour informer les utilisateurs.

HTML
<div class="toast show " role="alert" aria-live="assertive" aria-atomic="true">
  <div class="toast-header">
    <span class="me-2">🤩</span>
    <strong class="me-auto">Wow</strong>
    <small>Il y a 11 min</small>
    <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
  </div>
  <div class="toast-body">
    Non, mais quel joli message ?
  </div>
</div>

Caché par défaut !

Il faut ajouter la classe show au toast pour que ça s'affiche!

Positionnement

Si on veut que le toast soit positionné en bas à droite par exemple, il faut simplement ajouter les toasts dans un conteneur (appelons le grille-pain pour le plaisir), puis on le déplace dans la page. Voici un exemple : <div class="toast-container position-fixed bottom-0 end-0 p-3"> ... </div>

Barre de navigation

https://getbootstrap.com/docs/5.3/components/navbar/

La barre de navigation bootstrap est une navigation de site pensée pour l'accessibilité et le responsive.

Notez dans le code qu'un conteneur se situe à l'intérieur de la barre de navigation. Or il n'est pas nécessaire de l'ajouter dans un conteneur préallablement.

HTML
<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Festival</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Programmation</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Le festival</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

Y a-t-il un mode foncé ?

Ben oui! Il est possible de changer le thème de la barre de navigation en changeant les mentions light par dark dans les classes CSS.

Breakpoints

La barre de navigation en version mobile s'active en fonction du breakpoint spécifié. Par exemple, dans l'exemple où un applique la classe navbar-expand-lg, cela signifie que la barre de navigation mobile s'activera à partir du breakpoint md en dessendant.

https://getbootstrap.com/docs/5.3/components/carousel/

Le carousel permet d’afficher une série d’images ou de contenus avec un effet de diaporama.

HTML
<div id="carouselExampleIndicators" class="carousel slide">
  <div class="carousel-indicators">
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="1" aria-label="Slide 2"></button>
    <button type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide-to="2" aria-label="Slide 3"></button>
  </div>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="https://picsum.photos/id/172/800/600" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://picsum.photos/id/185/800/600" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://picsum.photos/id/135/800/600" class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="https://picsum.photos/id/213/800/600" class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Previous</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleIndicators" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Next</span>
  </button>
</div>

https://swiperjs.com/demos

Bien qu'il soit super qu'une fonctionnalité de carrousel soit intégrée à Bootstrap, ce n'est vraiment pas le meilleur. Comme on dit, il « fait la job », mais sans plus.

Il est souvent préférable d'opter pour une librairie avec plus de flexibilité et d'options de configuration, comme Swiper.

Installation

Inclure les fichiers suivants dans le HTML.

HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" />
HTML
<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>

Utilisation

HTML
<div class="swiper mySwiper">
  <div class="swiper-wrapper">
    <div class="swiper-slide">Contenu de la slide A</div>
    <div class="swiper-slide">Contenu de la slide B</div>
    <div class="swiper-slide">Contenu de la slide C</div>
    <div class="swiper-slide">Contenu de la slide D</div>
  </div>
  <div class="swiper-button-next"></div>
  <div class="swiper-button-prev"></div>
  <div class="swiper-pagination"></div>
</div>
JavaScript
document.addEventListener("DOMContentLoaded", function () {

  var swiper = new Swiper(".mySwiper", {
    cssMode: true,
    navigation: {
      nextEl: ".swiper-button-next",
      prevEl: ".swiper-button-prev",
    },
    pagination: {
      el: ".swiper-pagination",
    },
    mousewheel: true,
    keyboard: true,
  });

});

Images

Afin d'obtenir de meilleurs résultats, lorsque vous utilisez des images dans un carrousel, assurez vous qu'elles soient pleine largeur.

Avec Bootstrap, vous pouvez utiliser la classe w-100 pour lui donner une dimension de 100%, ainsi que la classe img-fluid pour éviter des problèmes de ratio d'image.

<img src="https://picsum.photos/800/600?random=1" class="img-fluid w-100" alt="...">

Exemple

Maçonnerie

https://masonry.desandro.com/options

Masonry est une technique de mise en page utilisée pour organiser des éléments dans une grille asymétrique et fluide.

C'est la technique utilisée dans Pinterest.

Nous allons l'utiliser de pair avec Bootstrap.

Installation

<script src="https://unpkg.com/masonry-layout@4/dist/masonry.pkgd.min.js"></script>

Utilisation

HTML
<div class="row">
  <div class="col col-md-6">...</div>
  <div class="col col-md-6">...</div>
  <div class="col col-md-6">...</div>
  ...
</div>
JavaScript
window.onload = function () {
  var grid = document.querySelector(".row");
  new Masonry(grid, {
    itemSelector: ".col",
    percentPosition: true,
    gutter: 0
  });
};

Exemple

Devoirs

Devoir - Bootstrap
La lichée