Solutions des Exercices

Retrouvez les réponses aux exercices pratiques de chaque module

Module 1
Page responsive simple

Créez une page simple avec un titre centré et un paragraphe qui s'adapte à tous les écrans.

✅ Solution :
<!DOCTYPE html> <html lang="fr"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> .container { max-width: 1200px; margin: 0 auto; padding: 0 15px; } h1 { text-align: center; font-size: clamp(1.5rem, 5vw, 3rem); } p { font-size: clamp(1rem, 2vw, 1.2rem); line-height: 1.6; } </style> </head> <body> <div class="container"> <h1>Bienvenue</h1> <p>Ce texte s'adapte à tous les écrans...</p> </div> </body> </html>
Points clés :
  • meta viewport essentiel pour le responsive
  • max-width + margin: 0 auto pour centrer
  • clamp() pour des tailles de police fluides
Module 2
Grille de cards responsive

Créez une grille de 4 cards qui passe de 1 colonne (mobile) à 4 colonnes (desktop).

✅ Solution avec Bootstrap :
<div class="container"> <div class="row g-4"> <div class="col-12 col-md-6 col-lg-3"> <div class="card h-100"> <div class="card-body"> <h5>Card 1</h5> <p>Contenu...</p> </div> </div> </div> <!-- Répéter 3x --> </div> </div>
✅ Solution en CSS pur :
.grid-cards { display: grid; gap: 1rem; grid-template-columns: 1fr; /* Mobile */ } @media (min-width: 768px) { .grid-cards { grid-template-columns: repeat(2, 1fr); /* Tablette */ } } @media (min-width: 992px) { .grid-cards { grid-template-columns: repeat(4, 1fr); /* Desktop */ } }
Module 3
Menu responsive avec hamburger

Créez une navbar qui affiche un menu hamburger sur mobile et les liens complets sur desktop.

✅ Solution Bootstrap :
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <div class="container"> <a class="navbar-brand" href="#">Logo</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navMain"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navMain"> <ul class="navbar-nav ms-auto"> <li class="nav-item"> <a class="nav-link" href="#">Accueil</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Cours</a> </li> </ul> </div> </div> </nav>
Breakpoints Bootstrap :
  • navbar-expand-sm : Hamburger sur mobile uniquement
  • navbar-expand-md : Hamburger sur mobile/tablette
  • navbar-expand-lg : Hamburger jusqu'à 992px
Module 4
Galerie d'images responsive

Créez une galerie où les images s'adaptent sans déformation et avec lazy loading.

✅ Solution :
<div class="container"> <div class="row g-3"> <div class="col-12 col-md-4 col-lg-3"> <img src="photo1.jpg" class="img-fluid rounded w-100" alt="Description" loading="lazy"> </div> <!-- Répéter --> </div> </div> <style> /* Images toujours responsives */ .img-fluid { max-width: 100%; height: auto; } /* Ratio fixe optionnel */ .ratio-16x9 { aspect-ratio: 16 / 9; object-fit: cover; } </style>
Techniques importantes :
  • max-width: 100% empêche les images de déborder
  • height: auto conserve les proportions
  • loading="lazy" améliore les performances
  • object-fit: cover pour des ratios fixes
Module 5
Landing page complète avec Bootstrap

Créez une landing page complète avec hero, features, pricing et footer.

✅ Structure complète :
<!-- Hero Section --> <section class="py-5 bg-primary text-white"> <div class="container"> <div class="row align-items-center"> <div class="col-lg-6"> <h1>Titre accrocheur</h1> <p class="lead">Description...</p> <a href="#" class="btn btn-light btn-lg"> Commencer </a> </div> <div class="col-lg-6"> <img src="hero.jpg" class="img-fluid"> </div> </div> </div> </section> <!-- Features --> <section class="py-5"> <div class="container"> <div class="row g-4"> <div class="col-md-4"> <div class="card h-100 border-0"> <div class="card-body text-center"> <div class="display-4 mb-3">🚀</div> <h5>Feature 1</h5> <p>Description...</p> </div> </div> </div> <!-- Répéter 2x --> </div> </div> </section> <!-- Pricing --> <section class="py-5 bg-light"> <div class="container"> <div class="row g-4 justify-content-center"> <div class="col-md-4"> <div class="card h-100"> <div class="card-body text-center"> <h4>Pro</h4> <div class="display-5 fw-bold">29€</div> <ul class="list-unstyled mt-3"> <li>✓ Feature 1</li> <li>✓ Feature 2</li> </ul> <button class="btn btn-primary w-100"> Choisir </button> </div> </div> </div> </div> </div> </section> <!-- Footer --> <footer class="py-4 bg-dark text-white"> <div class="container text-center"> <p>© 2026 Mon Site</p> </div> </footer>
← Retour au cours Testez vos connaissances →