Aller au contenu principal

📚 Les Composants (sans JavaScript)

🔗 Documentation officielle composants


Bootstrap offre une grande variété de composants prêts à l'emploi. Ce guide présente le principe de fonctionnement des composants qui n'ont pas besoin de JavaScript.

Qu'est-ce qu'un composant Bootstrap ?

Un composant est un élément d'interface préconçu et réutilisable qui combine HTML et CSS pour créer un élément visuel cohérent.

Pensez-y comme des blocs LEGO: des pièces standardisées que vous assemblez pour construire votre interface.

info

Au lieu d'écrire tout le HTML et CSS vous-même, Bootstrap vous fournit des structures prêtes à utiliser. Vous n'avez qu'à les personnaliser avec votre contenu.

Principe

Tous les composants Bootstrap suivent le même principe: une classe principale sur l'élément parent, et des classes spécifiques pour les éléments enfants.

<div class="composant">                    <!-- Classe principale -->
<div class="composant-partie1"> <!-- Sous-partie 1 -->
Contenu
</div>
<div class="composant-partie2"> <!-- Sous-partie 2 -->
Contenu
</div>
</div>

Exemple concret: Card

La card est un excellent exemple pour comprendre ce principe:

<!DOCTYPE html>
<html lang="fr">
<head>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container mt-4">
      <div class="card" style="width: 20rem;">
          <!-- card = classe principale -->
          
          <div class="card-header">
              <!-- card-header = sous-partie optionnelle -->
              En-tête de la carte
          </div>
          
          <div class="card-body">
              <!-- card-body = sous-partie principale -->
              <h5 class="card-title">Titre de la carte</h5>
              <p class="card-text">Ceci est le contenu principal de ma carte.</p>
              <a href="#" class="btn btn-primary">Action</a>
          </div>
          
          <div class="card-footer">
              <!-- card-footer = sous-partie optionnelle -->
              Pied de la carte
          </div>
      </div>
  </div>
</body>
</html>

Observez la structure :

  • card: classe principale (le conteneur)
  • card-header, card-body, card-footer: sous-parties
  • card-title, card-text: éléments à l'intérieur du body
Règle importante

Les classes enfants comme card-title ou card-text ne fonctionnent que si elles sont à l'intérieur d'un élément avec la classe parent card. Respectez toujours la hiérarchie!

Variations avec modificateurs

La plupart des composants offrent des variations via des classes modificatrices. Le pattern est toujours le même:

composant composant-modificateur

Exemple: Les boutons

<!DOCTYPE html>
<html lang="fr">
<head>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container mt-4">
      <h4>Classe de base : btn</h4>
      <button class="btn">Bouton sans style</button>
      
      <h4 class="mt-4">Modificateurs de couleur : btn-{couleur}</h4>
      <button class="btn btn-primary">btn-primary</button>
      <button class="btn btn-success">btn-success</button>
      <button class="btn btn-danger">btn-danger</button>
      <button class="btn btn-warning">btn-warning</button>
      
      <h4 class="mt-4">Modificateurs de style : btn-outline-{couleur}</h4>
      <button class="btn btn-outline-primary">btn-outline-primary</button>
      <button class="btn btn-outline-danger">btn-outline-danger</button>
      
      <h4 class="mt-4">Modificateurs de taille : btn-{taille}</h4>
      <button class="btn btn-primary btn-sm">btn-sm (petit)</button>
      <button class="btn btn-primary">normal</button>
      <button class="btn btn-primary btn-lg">btn-lg (grand)</button>
  </div>
</body>
</html>

Pattern récurrent :

  • btn = classe de base (obligatoire)
  • btn-primary, btn-success, etc. = couleur
  • btn-outline-* = style contour
  • btn-sm, btn-lg = taille
Couleurs sémantiques Bootstrap

Les mêmes couleurs se retrouvent partout dans Bootstrap :

  • primary : Action principale (bleu)
  • secondary : Secondaire (gris)
  • success : Réussite (vert)
  • danger : Erreur/suppression (rouge)
  • warning : Avertissement (jaune)
  • info : Information (cyan)
  • light / dark : Contraste

Combiner les composants

La vraie puissance vient de la combinaison de composants entre eux!

<!DOCTYPE html>
<html lang="fr">
<head>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container mt-4">
      <!-- Card + Badge + Button + Alert combinés -->
      <div class="card" style="width: 22rem;">
          <div class="card-body">
              <h5 class="card-title">
                  Produit vedette
                  <span class="badge bg-success">Nouveau</span>
              </h5>
              <p class="card-text">Un produit exceptionnel à ne pas manquer.</p>
              
              <!-- Alert à l'intérieur de la card -->
              <div class="alert alert-warning" role="alert">
                  Plus que 3 en stock !
              </div>
              
              <!-- Boutons -->
              <button class="btn btn-primary">Acheter</button>
              <button class="btn btn-outline-secondary">Détails</button>
          </div>
      </div>
  </div>
</body>
</html>

Ici on combine :

  • Une card (conteneur principal)
  • Un badge (indicateur "Nouveau")
  • Une alert (message d'avertissement)
  • Des buttons (actions)

Composants sans JavaScript vs avec JavaScript

Sans JavaScript

Ces composants fonctionnent immédiatement, juste avec le CSS:

  • Buttons, Cards, Alerts, Badges
  • Breadcrumb, List groups, Pagination
  • Progress bars, Spinners
  • Et d'autres...

Caractéristiques :

  • Affichage statique
  • Pas d'interactivité complexe
  • Prêts à l'emploi

Avec JavaScript (à venir)

Ces composants nécessitent le fichier bootstrap.bundle.min.js et doivent parfois être initialisés:

  • Modals (fenêtres modales)
  • Dropdowns (menus déroulants)
  • Carousel (carrousel d'images)
  • Collapse/Accordion
  • Tooltips, Popovers
  • Et d'autres...

Caractéristiques :

  • Interactifs (s'ouvrent, se ferment, défilent)
  • Réagissent aux clics/survols
  • Nécessitent une initialisation

Comment utiliser un composant

Étape 1: Identifier le besoin

"J'ai besoin d'afficher un message d'erreur" → Alert

Étape 2: Consulter la documentation

Allez sur https://getbootstrap.com/docs/5.3/components/ et trouvez le composant.

Étape 3: Copier la structure de base

<div class="alert alert-danger" role="alert">
Message d'erreur ici
</div>

Étape 4: Personnaliser

Remplacez le contenu placeholder par le vôtre et ajoutez des modificateurs si nécessaire.

Étape 5: Combiner avec d'autres composants

Ajoutez d'autres éléments Bootstrap à l'intérieur si nécessaire.

<!DOCTYPE html>
<html lang="fr">
<head>
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
  <div class="container mt-4">
      <!-- Étape 3-4-5 : Structure copiée, personnalisée et enrichie -->
      <div class="alert alert-danger" role="alert">
          <h4 class="alert-heading">Erreur de connexion</h4>
          <p>Votre mot de passe est incorrect. Veuillez réessayer.</p>
          <hr>
          <p class="mb-0">
              <a href="#" class="alert-link">Mot de passe oublié ?</a>
          </p>
      </div>
  </div>
</body>
</html>

Composants + classes utilitaires

Les composants s'enrichissent avec les classes utilitaires:

<div class="card mt-4 shadow">           <!-- Marge + ombre -->
<div class="card-body text-center"> <!-- Texte centré -->
<h5 class="card-title text-primary"> <!-- Titre coloré -->
Mon titre
</h5>
</div>
</div>

Trouver les composants dans la documentation

🔗 Documentation officielle composants

Dans le menu de gauche, vous trouverez tous les composants disponibles. Cliquez sur celui qui vous intéresse pour voir:

  • Des exemples visuels
  • Le code HTML à copier
  • Les variations disponibles
  • Les options de personnalisation
Conseil

Gardez cette page ouverte pendant vos développements. Vous y retournerez constamment pour copier des structures et découvrir des options!