Vous développez, vous testez, puis vous redimensionnez la fenêtre… et là, tout casse. Ce moment, tous les développeurs front l’ont vécu. Les media queries existent précisément pour éviter ces chausse-trappes d’affichage. Encore faut-il comprendre leur logique en profondeur et les employer avec méthode.
Media Queries : c’est quoi, pourquoi, et comment ça marche ?
Qu’est-ce qu’une media query en CSS ?
Imaginez un chef d’orchestre qui ajuste son tempo en fonction de la salle dans laquelle il joue. À l’instar de ce musicien attentif à son environnement, une media query en CSS déclenche un style particulier selon les caractéristiques du support : largeur de l’écran, orientation, résolution, capacité d’interaction… Elle agit comme un filtre conditionnel, un « si ceci, alors cela », qui permet d’adapter l’apparence d’un site sans jamais toucher à son HTML.
Concrètement, les media queries exploitent la règle @media, qui cible un ou plusieurs critères liés au terminal d’affichage. Dès qu’une condition définie se vérifie (ex. : écran inférieur à 768 pixels de large), le navigateur applique une série de styles précis.
Dans l’univers du responsive design, ces requêtes jouent un rôle central. Sans elles, difficile de concevoir un site fluide, agréable, et cohérent quel que soit le support utilisé.
Elles constituent en quelque sorte la colonne vertébrale technique qui permet de construire une seule base CSS, mais des expériences multiples.
Pourquoi utiliser les media queries ?
En orchestrant une mise en page adaptée, les media queries renforcent immédiatement l’expérience utilisateur. Sur un mobile, elles allègent l’interface ; sur un desktop, elles valorisent l’espace disponible.
Résultat : une navigation fluide, un contenu lisible, une ergonomie cohérente, et une perception qualitative du site — quel que soit le terminal.
Elles contribuent aussi à une meilleure accessibilité. Grâce à certaines requêtes spécifiques, on peut par exemple détecter les préférences de l’utilisateur (mode sombre, réduction des animations) et ajuster l’affichage sans effort. Le site devient alors non seulement responsive, mais aussi respectueux de ses usagers.
Enfin, sur le plan des performances, les media queries limitent le recours au JavaScript pour des comportements adaptatifs simples. En centralisant les adaptations dans le CSS, on réduit les traitements inutiles côté client, et donc les temps de chargement.
Comment utiliser les Media Queries concrètement ?
Comment écrire une media query en CSS (la bonne syntaxe)
Écrire une media query revient à poser une condition claire : « si le terminal remplit tel critère, alors applique ces styles ».
La règle s’ouvre toujours avec @media, suivie du type de média ciblé, des conditions éventuelles, puis du bloc CSS associé.
Voici la structure minimale :
@media screen and (min-width: 768px) {
body {
font-size: 18px;
}
}
Dans cet exemple, le style s’active uniquement si l’affichage se fait sur un écran (type screen) dont la largeur atteint au moins 768 pixels.
Cette logique conditionnelle s’appuie sur des types de média bien définis par la spécification CSS :
- screen pour les écrans (le plus courant)
- print pour les impressions papier
- speech pour les lecteurs vocaux
- all pour une application universelle
Ces types peuvent se combiner avec des opérateurs logiques :
- and lie plusieurs conditions (toutes doivent être vraies)
- not exclut une situation spécifique
- only restreint la portée de la media query à un type strict
Exemple :
@media not screen and (color) {
/* Styles pour les médias non-écrans avec gestion des couleurs */
}
Les conditions les plus fréquentes utilisent des caractéristiques comme :
- min-width ou max-width : largeur minimale ou maximale
- orientation : portrait ou landscape
- hover : si l’appareil prend en charge le survol
- resolution : densité de pixels (dpi, dppx, etc.)
- aspect-ratio, color, width, height, etc.
À noter : il est recommandé d’écrire ses conditions en mode mobile-first, en partant de la version mobile par défaut, puis en ajoutant des styles pour les écrans plus larges à l’aide de min-width.
Démo rapide : vos premières media queries
Voici un exemple minimaliste à tester dans n’importe quel éditeur de code :
<style>
body {
background-color: white;
}
@media screen and (max-width: 600px) {
body {
background-color: lightblue;
}
}
</style>
💡 Ouvrez la page dans votre navigateur, puis réduisez la largeur de la fenêtre. Dès que vous passez sous 600px, le fond change de couleur.
C’est simple, immédiat, et très efficace pour valider une logique responsive.
Quels sont les types de media queries ?
Les media queries ne se limitent pas à la largeur d’écran. La spécification CSS en prévoit une grande variété, classable en trois grandes familles : dimensions, capacités du périphérique, et préférences utilisateur.
Par dimensions : largeur, hauteur et ratio
Les requêtes les plus utilisées ciblent :
- min-width / max-width : largeur d’affichage
- min-height / max-height : hauteur visible
- aspect-ratio : rapport largeur/hauteur
Elles servent à structurer des breakpoints logiques (mobile, tablette, desktop) ou à adapter un module selon son contexte d’affichage.
Par capacités : interaction, orientation, résolution
Les périphériques ne se ressemblent pas. Certaines media queries ciblent :
- orientation : détecter si l’écran est vertical ou horizontal
- hover et pointer : détecter si le terminal prend en charge le survol (souris, trackpad) ou non (écran tactile)
- resolution : adapter les visuels pour les écrans haute densité (ex. Retina)
Ce type de requête affine l’affichage en fonction de la finesse ou des contraintes du périphérique.
Par préférences utilisateur : accessibilité et confort
CSS permet aussi de détecter les préférences système de l’utilisateur :
- prefers-color-scheme : clair ou sombre
- prefers-reduced-motion : animations limitées
- prefers-contrast : niveaux de contraste élevés
Ces media queries renforcent l’accessibilité sans surcharger le code, et traduisent une attention réelle portée à l’expérience utilisateur.
Comment créer un site responsive avec les media queries ?
Un site responsive repose sur une logique d’anticipation : penser la mise en page non plus en pixels figés, mais en zones flexibles, adaptables à tous les environnements d’affichage.
Pour atteindre ce niveau de souplesse, il faut structurer le code autour de breakpoints stratégiques, tout en choisissant une approche cohérente : mobile-first ou desktop-first.
Mobile-first ou desktop-first : faut-il choisir ?
L’approche mobile-first part du principe que l’utilisateur consulte d’abord le site sur un écran restreint. On code alors les styles de base pour les petits écrans, puis on enrichit progressivement avec des media queries de type min-width.
À l’inverse, desktop-first cible d’abord les grands écrans et réduit ensuite les styles avec des max-width.
Aujourd’hui, le mobile-first domine. Il reflète mieux les usages réels, simplifie la maintenance du code, et facilite l’optimisation des performances sur les appareils limités.
Utiliser les breakpoints efficacement
Inutile de multiplier les seuils : trois ou quatre bien choisis suffisent à couvrir la majorité des besoins. Une base classique :
- 0–599px : smartphones
- 600–1023px : tablettes
- 1024–1439px : petits desktops
- 1440px et plus : écrans larges
Ces breakpoints doivent refléter des changements de mise en page réels, pas des ajustements cosmétiques. Chaque point de rupture doit déclencher un réagencement significatif de l’interface.
Réorganiser la mise en page selon l’écran
Les media queries se combinent naturellement avec Flexbox ou CSS Grid, deux outils qui structurent des layouts adaptatifs. Quelques leviers fréquents :
- Passer d’une disposition en colonne (mobile) à une disposition en ligne (desktop)
- Réorganiser l’ordre des blocs avec order
- Modifier le nombre de colonnes dans une grille
Exemple concret :
.container {
display: flex;
flex-direction: column;
}
@media screen and (min-width: 1024px) {
.container {
flex-direction: row;
}
}
Une telle stratégie garantit une lecture fluide et une navigation confortable, quel que soit l’appareil.
Quels appareils utilisent les media queries ?
Les media queries ciblent tous les contextes d’affichage, bien au-delà du classique trio mobile / tablette / desktop :
Téléphones, tablettes, ordinateurs
C’est le terrain le plus courant. Ces appareils présentent des tailles d’écran très variables, mais aussi des capacités d’interaction différentes. Le tactile, le clavier, ou la souris impliquent des choix d’interface spécifiques.
Imprimantes : media queries pour papier
CSS permet d’adapter l’impression grâce à @media print. On peut ainsi masquer les éléments superflus, ajuster la typographie ou forcer un en-tête propre. Cette fonctionnalité reste méconnue, mais utile pour les pages d’articles, les devis ou les documents juridiques.
Montres, télévisions, terminaux spécifiques
Des environnements comme les smartwatches, les bornes interactives ou les smart TV imposent des contraintes uniques : petites résolutions, navigation à distance, temps de latence.
Les media queries, combinées aux unités CSS relatives (em, %, vw, vh), permettent d’anticiper ces contraintes, même sur des supports atypiques.
Quelles sont les erreurs courantes avec les media queries ?
Même les développeurs aguerris tombent parfois dans des pièges évitables. Voici un tour d’horizon des erreurs classiques.
1. Multiplier les breakpoints inutiles
Chaque media query supplémentaire complexifie le code, augmente les risques d’incohérence et rend la maintenance plus coûteuse.
Mieux vaut raisonner en ruptures fonctionnelles qu’en pixels exacts.
2. Surcharger le CSS
L’accumulation de règles conditionnelles peut entraîner un CSS verbeux, lent à charger, et difficile à lire.
Il vaut mieux regrouper les règles par composant ou utiliser un préprocesseur comme SCSS pour factoriser le code.
3. Ignorer les préférences utilisateur
Trop de sites continuent d’imposer des animations, des contrastes faibles ou une interface non adaptée aux personnes sensibles à l’effort visuel.
Les media queries comme prefers-reduced-motion existent précisément pour répondre à ces besoins.
Aller plus loin : techniques avancées et bonnes ressources
Des media queries plus intelligentes et organisées
Au-delà du CSS pur, les préprocesseurs comme SCSS facilitent grandement la gestion des media queries.
Le nesting permet d’imbriquer une media query directement dans un sélecteur, ce qui rend le code plus lisible.
Les mixins, quant à eux, centralisent les breakpoints : une simple fonction réutilisable suffit à adapter un composant à plusieurs tailles d’écran.
Exemple :
@mixin breakpoint($size) {
@if $size == tablet {
@media (min-width: 768px) { @content; }
}
}
Autre avancée majeure : les container queries, désormais compatibles avec les navigateurs modernes. Elles ne se basent plus sur la taille de l’écran, mais sur celle d’un élément parent. Idéales pour créer des composants vraiment autonomes et adaptatifs.
Media Queries et JavaScript : aller au-delà du CSS
Certaines interactions dépassent les capacités du CSS. La méthode window.matchMedia() en JavaScript permet de détecter des media queries dans le code JS, puis de déclencher des actions en fonction.
Un cas fréquent : afficher un menu « burger » uniquement si l’écran mesure moins de 768 pixels, ou réorganiser dynamiquement un slider.
if (window.matchMedia("(max-width: 768px)").matches) {
// Adapter le DOM ici
}