Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
@media
Baseline Widely available *
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
Larègle @CSS@media permet d'appliquer une partie d'une feuille de styles en fonction du résultat d'une ou plusieursrequêtes média (media queries). Grâce à cette règle, on peut indiquer une requête média et un ensemble de règles CSS qui s'appliquent uniquement si la requête média est vérifiée pour l'appareil, le contexte avec lequel le contenu est consulté.
Note :Il est possible de manipuler la règle@media via le CSSOM (et JavaScript) grâce à l'interfaceCSSMediaRule.
Dans cet article
Exemple interactif
abbr { color: #860304; font-weight: bold; transition: color 0.5s ease;}@media (hover: hover) { abbr:hover { color: #001ca8; transition-duration: 0.5s; }}@media not all and (hover: hover) { abbr::after { content: " (" attr(title) ")"; }}<p> La <abbr title="Administration nationale de l'aéronautique et de l'espace"> NASA </abbr> est une agence gouvernementale américaine responsable des sciences et des technologies liées à l'air et à l'espace.</p>Syntaxe
/* Au niveau le plus haut du code */@media screen and (min-width: 900px) { article { padding: 1rem 3rem; }}/* Imbriquée dans une autre règle-@ conditionnelle */@supports (display: flex) { @media screen and (min-width: 900px) { article { display: flex; } }}La règle@media peut être placée au niveau le plus haut du code ou imbriquée dans une autre règle @ conditionnelle.
Pour plus d'informations sur la syntaxe des requêtes média, voirUtiliser les requêtes média.
Description
Une<media-query-list> de requête média inclut des<media-type>, des<media-feature> et desopérateurs logiques.
Types de média
Les types de média décrivent la catégorie générale d'un appareil. Sauf quand on utilise les opérateursnot ouonly, le type de média est optionnel et correspond àall par défaut.
allApplicable à tous les appareils.
printDestiné pour le contenu paginé et les documents visualisés sur un écran en aperçu d'impression. Voirla page sur les médias paginés pour plus d'informations sur les aspects de formatage spécifiques à ces formats.
screenDestiné principalement aux écrans.
Note :CSS2.1 etle module de spécification sur les requêtes média de niveau 3 ont défini des types de média supplémentaires (tty,tv,projection,handheld,braille,embossed, etaural), mais ceux-ci ont été dépréciés avecle module de spécification sur les requêtes média de niveau 4 et ne devraient donc pas être utilisés.
Caractéristiques média
Une<media feature> décrit une caractéristique spécifique de l'agent utilisateur, du périphérique de sortie ou de l'environnement.Les expressions de caractéristique média testent leur présence, leur valeur ou une plage de valeurs, et sont entièrement optionnelles. Chaque expression de caractéristique média doit être entourée de parenthèses.
any-hoverUn des mécanismes d'entrée disponibles permet-il à l'utilisateur·ice de survoler des éléments ?
any-pointerUn des mécanismes d'entrée disponibles est-il un dispositif de pointage, et si oui, avec quelle précision ?
aspect-ratioRapport largeur/hauteur (rapport d'aspect) de la zone d'affichage (viewport en anglais).
colorNombre de bits par composant couleur du périphérique de sortie, ou zéro si le périphérique n'est pas en couleur.
color-gamutPlage approximative de couleurs prises en charge par l'agent utilisateur et le périphérique de sortie.
color-indexNombre d'entrées dans la table de correspondance des couleurs du périphérique de sortie, ou zéro si le périphérique n'utilise pas une telle table.
device-aspect-ratioRapport largeur/hauteur du périphérique de sortie. Déprécié dans Media Queries niveau 4.
device-heightHauteur de la surface de rendu du périphérique de sortie. Déprécié dans Media Queries niveau 4.
device-postureDétecte la posture actuelle du périphérique, c'est-à-dire si la zone d'affichage est à plat ou pliée. Défini dans l'API Device Posture.
device-widthLargeur de la surface de rendu du périphérique de sortie. Déprécié dans Media Queries niveau 4.
display-modeMode dans lequel une application s'affiche : par exemple,plein écran oumode image dans l'image.Ajouté dans Media Queries niveau 5.
dynamic-rangeCombinaison de la luminosité, du contraste et de la profondeur de couleur prise en charge par l'agent utilisateur et le périphérique de sortie. Ajouté dans Media Queries niveau 5.
forced-colorsDétecte si l'agent utilisateur restreint la palette de couleurs.Ajouté dans Media Queries niveau 5.
gridLe périphérique utilise-t-il un écran en grille ou en bitmap ?
heightHauteur de la zone d'affichage (viewport en anglais).
horizontal-viewport-segmentsDétecte si le périphérique possède un nombre spécifié de segments de zone d'affichage disposés horizontalement.
hoverLe mécanisme d'entrée principal permet-il à l'utilisateur·ice de survoler des éléments ?
inverted-colorsL'agent utilisateur ou le système d'exploitation inverse-t-il les couleurs ?Ajouté dans Media Queries niveau 5.
monochromeNombre de bits par pixel dans la mémoire tampon monochrome du périphérique de sortie, ou zéro si le périphérique n'est pas monochrome.
orientationOrientation de la zone d'affichage (viewport en anglais).
overflow-blockComment le périphérique de sortie gère-t-il le contenu qui déborde de la zone d'affichage selon l'axe du bloc ?
overflow-inlineLe contenu qui déborde de la zone d'affichage selon l'axe en ligne peut-il être défilé ?
pointerLe mécanisme d'entrée principal est-il un dispositif de pointage, et si oui, avec quelle précision ?
prefers-color-schemeDétecte si l'utilisateur·ice préfère un thème clair ou sombre.Ajouté dans Media Queries niveau 5.
prefers-contrastDétecte si l'utilisateur·ice a demandé au système d'augmenter ou de diminuer le contraste entre les couleurs adjacentes.Ajouté dans Media Queries niveau 5.
prefers-reduced-dataDétecte si l'utilisateur·ice a demandé un contenu web qui consomme moins de données.
prefers-reduced-motionL'utilisateur·ice préfère moins d'animations sur la page.Ajouté dans Media Queries niveau 5.
prefers-reduced-transparencyDétecte si l'utilisateur·ice a activé un réglage sur son appareil pour réduire les effets de transparence ou de translucidité utilisés sur l'appareil.
resolutionDensité de pixels du périphérique de sortie.
scanLe rendu de l'affichage est-il progressif ou entrelacé ?
scriptingDétecte si le scripting (JavaScript) est disponible.Ajouté dans Media Queries niveau 5.
shapeDétecte la forme du périphérique pour distinguer les écrans rectangulaires et ronds.
updateFréquence à laquelle le périphérique de sortie peut modifier l'apparence du contenu.
vertical-viewport-segmentsDétecte si le périphérique possède un nombre spécifié de segments de zone d'affichage disposés verticalement. Ajouté dans Media Queries niveau 5.
video-dynamic-rangeCombinaison de la luminosité, du contraste et de la profondeur de couleur prise en charge par le plan vidéo de l'agent utilisateur et du périphérique de sortie. Ajouté dans Media Queries niveau 5.
widthLargeur de la zone d'affichage (viewport en anglais), y compris la largeur de la barre de défilement.
-moz-device-pixel-ratioNombre de pixels du périphérique par pixel CSS. Utilisez plutôt la caractéristique
resolutionavec l'unitédppx.-webkit-animationLe navigateur prend en charge l'animation CSS
animationpréfixée-webkit. Utilisez plutôt la requête de fonctionnalité@supports (animation).-webkit-device-pixel-ratioNombre de pixels du périphérique par pixel CSS. Utilisez plutôt la caractéristique
resolutionavec l'unitédppx.-webkit-transform-2dLe navigateur prend en charge la transformation CSS 2D
transformpréfixée-webkit. Utilisez plutôt la requête de fonctionnalité@supports (transform).-webkit-transform-3dLe navigateur prend en charge la transformation CSS 3D
transformpréfixée-webkit. Utilisez plutôt la requête de fonctionnalité@supports (transform).-webkit-transitionLe navigateur prend en charge la transition CSS
transitionpréfixée-webkit. Utilisez plutôt la requête de fonctionnalité@supports (transition).
Opérateurs logiques
Les opérateurs logiquesnot,and, etonly peuvent être utilisés pour composer une requête média complexe.Il est aussi possible de combiner plusieurs requêtes média en une seule règle en les séparant avec des virgules.
andCet opérateur permet de combiner plusieurs tests de caractéristiques afin que le résultat du test vaille
truesi chacun des tests individuels vauttrue. Il permet également de joindre des tests de caractéristiques média et des tests de type de média.notCet opérateur donne la négation d'une requête média, renvoyant
truesi la requête devait renvoyerfalse. Si cet opérateur est présent dans une liste de requêtes séparées par des virgules, la négation portera uniquement sur la requête sur laquelle l'opérateur est appliqué. Si l'opérateurnotest utilisé, ilest nécessaire d'indiquer un type de média.Note :Dans la spécification de niveau 3, le mot-clé
notpermet uniquement de prendre la négation d'une requête média entière (et pas d'une caractéristique seule).onlyApplique la mise en forme uniquement si toute la requête correspond. Ce mot-clé est utile pour empêcher les anciens navigateurs d'appliquer les styles en question. Sans utiliser
only, les anciens navigateurs interpréteraient la requêtescreen and (max-width: 500px)commescreen, en ignorant le reste et en appliquant donc le style à tous les écrans. Si l'opérateuronlyest utilisé, ilest nécessaire d'indiquer un type de média.,(virgule)Les virgules sont utilisées pour combiner plusieurs requêtes média en une seule règle. Chaque requête d'une liste de requêtes séparées par des virgules est traitée séparément des autres. Ainsi, si une des requêtes de la liste vaut
true, l'ensemble de l'instruction renverratrue. Autrement dit, la virgule agit comme un opérateur logiqueor.orÉquivalent à l'opérateur
,. Ajouté dans Media Queries Level 4.
Indications client de l'agent utilisateur
Certaines requêtes média disposent d'indications client de l'agent utilisateur correspondantes.Ce sont des en-têtes HTTP qui demandent un contenu pré-optimisé pour une exigence média particulière.Elles incluentSec-CH-Prefers-Color-Scheme etSec-CH-Prefers-Reduced-Motion.
Syntaxe formelle
@media =
@media<media-query-list> {<rule-list> }
Accessibilité
Pour une meilleure accessibilité, notamment pour les personnes qui ajustent la taille du texte d'un site, il convient d'utiliser l'unitéem lorsqu'une valeur de type<length> est nécessaire pourles requêtes média.
Les unitésem etpx sont toutes les deux valides, maisem s'adapte mieux si l'utilisateur·ice modifie la taille du texte du navigateur.
Il est également pertinent de prendre en compte les requêtes média ou lesindications du client pour améliorer l'expérience utilisateur·ice. Par exemple, la requête médiaprefers-reduced-motion ou l'en-tête HTTP équivalentSec-CH-Prefers-Reduced-Motion peuvent servir à limiter les animations ou les déplacements selon les préférences de l'utilisateur·ice.
Sécurité
Les requêtes média fournissent des informations sur les capacités de l'appareil utilisé pour la navigation. Ces informations peuvent être détournées afin de construire une empreinte permettant d'identifier l'appareil ou de le catégoriser de façon non désirée.
Pour cette raison, un navigateur peut choisir de modifier les valeurs renvoyées afin de limiter ce pistage. Ainsi, si la détection d'empreinte numérique est désactivée dans Firefox, la plupart des caractéristiques média renvoient leurs valeurs par défaut afin d'éviter leur utilisation pour le pistage.
Exemples
>Tester les types de média print et screen
@media print { body { font-size: 10pt; }}@media screen { body { font-size: 13px; }}@media screen, print { body { line-height: 1.2; }}@media only screen and (min-width: 320px) and (max-width: 480px) and (-webkit-min-device-pixel-ratio: 2) { body { line-height: 1.4; }}Avec la mise à jour de la spécification pour les requêtes média, une nouvelle syntaxe, plus concise, peut être utilisée pour les tests d'intervalle :
@media (height > 600px) { body { line-height: 1.4; }}@media (400px <= width <= 700px) { body { line-height: 1.4; }}Pour plus d'exemples, voirUtiliser les requêtes média.
Spécifications
| Specification |
|---|
| Media Queries Level 4> # media-descriptor-table> |
| CSS Conditional Rules Module Level 3> # at-media> |