Responsive Design

Responsive Design

Le responsive design permet d'utiliser une seule mise en page sur tous les écrans. Une balise viewport, des unités fluides et des media queries mobile-first couvrent la grande majorité des cas.

beginner15 min readUpdated 15 sept. 2026
responsive.css
css
/* responsive.css */
.page {
  padding: clamp(1rem, 4vw, 2.5rem);
}

.grid {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
  .grid { grid-template-columns: repeat(3, 1fr); }
}
Viewport
width=device-width
Approche
Mobile first
Breakpoints
min-width media queries
Unités
%, rem, vw, fr
Typographie fluide
clamp()
Moderne
Container queries

Pourquoi c'est important

Pourquoi le responsive design est devenu la norme

Une seule base de code

Une mise en page unique s'adapte des petits téléphones aux moniteurs ultra-larges, évitant ainsi de maintenir plusieurs sites distincts.

Meilleure expérience

Le contenu reste lisible et accessible au toucher quelle que soit la taille, ce qui améliore l'utilisabilité et la conversion.

Intégré à CSS

Flexbox, Grid, les unités fluides et les container queries gèrent la réactivité sans aucun JavaScript.

Le tableau complet

Les trois piliers du responsive design

Une mise en page de base fluide, des breakpoints pour les changements structurels et des médias flexibles qui ne débordent jamais.

La base

Fluide

Commencez par une mise en page fluide sur une seule colonne qui fonctionne partout.

Breakpoints

Adapter

Ajoutez des media queries là où la structure de la mise en page doit changer.

Médias

Flexibles

Des images, vidéos et grilles qui rétrécissent sans créer de débordement.

Le responsive design en un coup d'œil

Les techniques fondamentales

Balise Viewport

Indique aux navigateurs mobiles d'utiliser la largeur de l'appareil au lieu de dézoomer la page.

Mobile first

Écrivez les styles de base pour les petits écrans et ajoutez des couches pour les plus grands avec min-width.

Breakpoints

Ajoutez-les là où le contenu se brise, et non en fonction de la taille des appareils.

Unités fluides

Les pourcentages, rem, vw et fr s'adaptent à la taille du viewport.

clamp()

Définissez une valeur minimale, préférée et maximale en une seule déclaration.

Container queries

Réagissez à la taille propre d'un composant, et non à celle du viewport.

Un bref aperçu

Des largeurs fixes au layout intrinsèque

  1. 2001

    Layouts fluides

    Les mises en page basées sur des pourcentages commencent à remplacer les tableaux à largeur fixe.

    01
  2. 2010

    Responsive web design

    Ethan Marcotte nomme la combinaison de grilles fluides, d'images flexibles et de media queries.

    10
  3. 2012

    Mobile first

    La conception prioritaire pour les petits écrans devient l'approche recommandée.

    12
  4. 2017

    Flexbox et Grid

    Les systèmes de mise en page natifs rendent les structures responsives beaucoup plus simples.

    17
  5. Aujourd'hui

    Layout intrinsèque et container queries

    Les composants réagissent à leur propre taille, réduisant le code dépendant du viewport.

    Aujourd'hui

Le guide complet

Responsive Design: Tout ce que vous devez savoir

Qu’est-ce que le responsive design ?

Le responsive design consiste à créer une mise en page unique capable de s’adapter à tous les types d’écrans. Au lieu de développer un site mobile distinct, vous concevez une structure de base fluide, vous ajoutez des breakpoints là où l’organisation doit évoluer, et vous laissez les médias s’adapter pour remplir l’espace disponible.

C’est devenu la norme car c’est tout simplement une meilleure approche technique : une seule base de code, un seul ensemble de contenus et une seule URL à référencer et à partager. Le CSS moderne — Flexbox, Grid, les unités fluides et les container queries — rend cette mise en œuvre plus simple que jamais.

La balise viewport

Tout commence par la balise meta viewport.

<!-- index.html -->
<meta name="viewport" content="width=device-width, initial-scale=1" />

Sans elle, les navigateurs mobiles considèrent que la largeur de la fenêtre correspond à celle d’un ordinateur et effectuent un zoom arrière, ce qui rend le texte minuscule et casse vos breakpoints. Avec elle, la largeur en pixels CSS correspond à l’appareil, permettant ainsi aux media queries de se comporter de manière prévisible.

Mobile-first

Rédigez vos styles de base pour les petits écrans, puis améliorez-les pour les écrans plus larges avec min-width.

/* mobile-first.css */
.grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 768px) {
  .grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

L’approche mobile-first tend à produire un CSS plus simple : vous ajoutez des règles à mesure que l’écran s’agrandit plutôt que de devoir les écraser. Cela permet également de garder l’expérience sur petit écran comme référence, ce qui est essentiel puisque la majorité du trafic est mobile.

Breakpoints

Les breakpoints (points de rupture) correspondent aux moments où la mise en page doit s’adapter, et non aux dimensions d’un appareil spécifique.

  • Redimensionnez la fenêtre lentement et surveillez les problèmes : lignes trop longues, colonnes trop étroites ou éléments qui se chevauchent.
  • Ajoutez une requête min-width au point où le design se brise.
  • Réutilisez un petit ensemble de breakpoints dans tout le projet pour garantir la cohérence.
  • Laissez les propriétés auto-fit et minmax() de Grid gérer de nombreux cas sans avoir recours à une requête.
/* auto.css */
.cards {
  display: grid;
  gap: 1.5rem;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

Cette règle unique remplace plusieurs breakpoints en créant autant de colonnes que possible selon l’espace disponible.

Unités fluides

Les largeurs fixes en pixels ne peuvent pas s’adapter. Privilégiez les unités évolutives :

  • % relatif au parent.
  • rem relatif à la taille de police racine, idéal pour l’espacement et la typographie.
  • vw / vh relatif au viewport.
  • fr fractions de l’espace disponible dans Grid.
  • ch environ la largeur d’un caractère, utile pour la longueur des lignes.
/* fluid.css */
.page {
  width: min(100% - 2rem, 64rem);
  margin-inline: auto;
}

.prose {
  max-width: 65ch;
}

h1 {
  font-size: clamp(1.75rem, 5vw, 3rem);
}

clamp(min, preferred, max) est particulièrement utile : il s’adapte au viewport sans jamais descendre en dessous du minimum ni dépasser le maximum, remplaçant ainsi une accumulation de media queries pour une typographie et des espacements fluides.

Médias flexibles

Les images et les vidéos ne doivent jamais déborder de leur conteneur.

/* media.css */
img,
video {
  max-width: 100%;
  height: auto;
}

Pour des performances optimales, servez également des images dimensionnées avec srcset et sizes, et définissez width et height (ou aspect-ratio) afin que la mise en page ne saute pas lors de leur chargement. Le guide de performance Web traite en détail des images responsives.

Container queries

Les media queries de viewport forcent les composants à avoir connaissance de la page. Les Container queries permettent invece à un composant de répondre à son propre conteneur.

/* container.css */
.card-list {
  container-type: inline-size;
}

.card {
  display: grid;
  gap: 1rem;
}

@container (min-width: 30rem) {
  .card {
    grid-template-columns: 8rem 1fr;
  }
}

Désormais, la même carte s’adapte qu’elle se trouve dans une barre latérale étroite ou dans une colonne principale large, ce qui rend les composants véritablement réutilisables. Le support est maintenant suffisamment étendu pour une utilisation en production.

Tactile, zones cibles et typographie

  • Créez des zones cibles d’au moins 44×44 pixels CSS.
  • Maintenez le texte du corps à un minimum d’environ 16px pour éviter que les navigateurs mobiles ne zooment lors du focus.
  • Limitez la longueur des lignes à environ 45–75 caractères pour optimiser la lisibilité.
  • Évitez les interactions basées uniquement sur le survol (hover) ; proposez des alternatives adaptées au tactile.
  • Testez avec le clavier et sur un appareil réel, et pas seulement avec une fenêtre redimensionnée.

Tests

  • Utilisez le mode responsive du navigateur pour vérifier rapidement différentes largeurs.
  • Testez sur de vrais téléphones ; l’émulation ne reflète pas les performances réelles ni le comportement tactile.
  • Vérifiez les modes paysage et portrait.
  • Zoomez à 200 % et confirmez que rien ne se casse.
  • Testez avec du contenu long, et pas seulement le “happy path” avec des chaînes de caractères courtes.

Bonnes pratiques

  • Incluez toujours la balise meta viewport.
  • Concevez vos interfaces en priorité pour le mobile (mobile-first) et améliorez-les avec des requêtes min-width.
  • Laissez les propriétés auto-fit et minmax() de Grid remplacer bon nombre de breakpoints.
  • Utilisez des unités fluides et clamp() pour la typographie et l’espacement.
  • Permettez aux images et aux médias de s’adapter avec max-width: 100%.
  • Utilisez les container queries pour les composants réutilisables.
  • Veillez à ce que les zones cliquables soient suffisamment larges et le texte du corps lisible.

Erreurs courantes

  • Oublier la balise meta viewport.
  • Concevoir d’abord pour le bureau (desktop-first) et accumuler les overrides.
  • Rechercher des breakpoints spécifiques à certains appareils plutôt que de se baser sur le contenu.
  • Utiliser des largeurs fixes en pixels qui provoquent un débordement sur les petits écrans.
  • Créer des interactions basées uniquement sur le survol (hover), qui ne fonctionnent pas sur tactile.
  • Tester uniquement dans une fenêtre de navigateur redimensionnée sur bureau.

Et après ?

Le design responsive est la base de toute interface moderne. Appuyez-vous sur les fondamentaux du CSS, utilisez Flexbox et CSS Grid pour la mise en page, et ajoutez des CSS Variables pour harmoniser vos espacements et vos thèmes. Ensuite, prenez une page que vous connaissez et redimensionnez-la lentement, du mobile vers le desktop, en corrigeant chaque rupture de mise en page au fur et à mesure.

Écriture des media queries

Des styles de base mobile-first combinés à des requêtes min-width évoluent proprement. Les requêtes max-width desktop-first ont tendance à accumuler des surcharges.

Préférer
.grid {
  display: grid;
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
Éviter
.grid {
  grid-template-columns: repeat(3, 1fr);
}

@media (max-width: 768px) {
  .grid {
    grid-template-columns: 1fr;
  }
}

Dimensionnement du contenu

Le dimensionnement fluide s'adapte entre un minimum et un maximum sans nécessiter une media query pour chaque étape.

Préférer
h1 {
  font-size: clamp(1.75rem, 5vw, 3rem);
}

.page {
  width: min(100% - 2rem, 64rem);
  margin-inline: auto;
}
Éviter
h1 { font-size: 48px; }
.page { width: 1024px; }
/* overflows on phones */

FAQ

Foire aux questions

Keep learning

Related topics from the roadmap.

$ commencer à apprendre

Prêt à apprendre Responsive Design ?

Notre tutoriel interactif vous guide à travers Responsive Design pas à pas — avec des quiz et du vrai code que vous pouvez exécuter dans le navigateur.