Modales Bootstrap 4 : Dialogues et Popups

🏷️ Intégration HTML && CSS 📅 13/04/2026 19:00:00 👤 Mezgani said
Bootstrap Modales Composants Ui Html Javascript
Modales Bootstrap 4 : Dialogues et Popups

Explication complète des modales Bootstrap 4, comment les créer, les configurer, les animer et les intégrer dans une application web.

Structure de base — ouvrir une modale

Une modale Bootstrap 4 est déclenchée par un bouton via data-toggle="modal" et data-target="#id". Elle est composée de .modal-header, .modal-body et .modal-footer.

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#maModale">
    Ouvrir la modale
</button>

<div class="modal fade" id="maModale" tabindex="-1" role="dialog"
     aria-labelledby="maModaleTitre" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="maModaleTitre">Titre de la modale</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Fermer">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                <p>Contenu principal de la modale.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-dismiss="modal">Fermer</button>
                <button type="button" class="btn btn-primary">Valider</button>
            </div>
        </div>
    </div>
</div>

Résultat — cliquez sur le bouton :

A retenir: data-dismiss="modal" sur n'importe quel élément suffit à fermer la modale. L'overlay sombre est automatiquement géré par Bootstrap.

Tailles et positions

Ajoutez une classe sur .modal-dialog pour changer la taille. .modal-dialog-centered centre verticalement.

<div class="modal-dialog modal-sm">...</div>       <!-- Petite -->
<div class="modal-dialog">...</div>               <!-- Standard -->
<div class="modal-dialog modal-lg">...</div>       <!-- Grande -->
<div class="modal-dialog modal-dialog-centered">...</div> <!-- Centrée -->

Résultat — testez chaque taille :

Modale avec formulaire

Les modales sont idéales pour les formulaires de connexion ou d'inscription sans quitter la page courante.

<button class="btn btn-primary" data-toggle="modal" data-target="#loginModal">
    Se connecter
</button>

<div class="modal fade" id="loginModal" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Connexion</h5>
                <button class="close" data-dismiss="modal"><span>&times;</span></button>
            </div>
            <div class="modal-body">
                <form>
                    <div class="form-group">
                        <label>Adresse email</label>
                        <input type="email" class="form-control" placeholder="exemple@email.com">
                    </div>
                    <div class="form-group">
                        <label>Mot de passe</label>
                        <input type="password" class="form-control">
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button class="btn btn-secondary" data-dismiss="modal">Annuler</button>
                <button class="btn btn-primary">Se connecter</button>
            </div>
        </div>
    </div>
</div>

Résultat — cliquez pour ouvrir le formulaire :

Modale de confirmation

Pattern essentiel avant une action destructive : supprimer un élément, vider un panier, réinitialiser des données.

<button class="btn btn-danger" data-toggle="modal" data-target="#confirmSuppr">
    Supprimer le compte
</button>

<div class="modal fade" id="confirmSuppr" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog modal-dialog-centered modal-sm" role="document">
        <div class="modal-content">
            <div class="modal-body text-center pt-4">
                <p class="h5">Supprimer le compte ?</p>
                <p class="text-muted">Cette action est irréversible.</p>
            </div>
            <div class="modal-footer justify-content-center border-0 pb-4">
                <button class="btn btn-secondary" data-dismiss="modal">Annuler</button>
                <button class="btn btn-danger" data-dismiss="modal">Oui, supprimer</button>
            </div>
        </div>
    </div>
</div>

Résultat — cliquez pour voir la confirmation :

Contrôle via JavaScript

Vous pouvez ouvrir/fermer une modale programmatiquement et écouter ses événements.

// Ouvrir / fermer / toggle
$('#maModale').modal('show');
$('#maModale').modal('hide');
$('#maModale').modal('toggle');

// Événements du cycle de vie
$('#maModale').on('shown.bs.modal', function () {
    // La modale est pleinement ouverte — focus le premier champ
    $(this).find('input:first').focus();
});

$('#maModale').on('hidden.bs.modal', function () {
    // La modale est fermée — réinitialiser le formulaire
    $(this).find('form')[0].reset();
});
A retenir: Utilisez l'événement shown.bs.modal (et non show.bs.modal) pour agir après que l'animation est terminée.

Bonnes pratiques

  • Toujours inclure role="dialog" et aria-labelledby pour l'accessibilité
  • Préférer .modal-dialog-centered pour les confirmations courtes
  • Ne pas imbriquer des modales — Bootstrap 4 ne le supporte pas
  • Réinitialiser les formulaires à la fermeture via l'événement hidden.bs.modal
  • Sur mobile, éviter les modales très larges — testez avec modal-sm ou la taille standard
  • L'overlay se ferme au clic par défaut — désactivez avec data-backdrop="static" si le formulaire est critique