Conception web adaptative

Crée des pages web qui fonctionnent bien sur les téléphones, les tablettes et les ordinateurs. Configure la zone d’affichage pour que les navigateurs mobiles utilisent la largeur réelle de l’écran, dimensionne le texte et les boîtes avec des unités relatives et des unités relatives à la zone d’affichage, et modifie les mises en page avec des requêtes média conçues d’abord pour les mobiles. Utilise les requêtes de conteneur pour que les composants s’adaptent à l’espace qui leur est donné, fournis des images adaptées à chaque écran avec srcset, sizes et <picture>, et teste les pages à différentes largeurs, avec différents niveaux de zoom, en entrée tactile et selon les préférences des lecteurs.

DébutantUnité 6 sur 8 de la formation Formation : HTML et CSS : création et publication de sites web

Ce que tu vas apprendre

  1. Explique la conception web adaptative, fais en sorte que les navigateurs mobiles mettent en page une page à la largeur réelle de l’appareil, et dimensionne le texte et les boîtes avec des unités qui s’adaptent.
    • Explique la conception web adaptative et configure la zone d’affichage
      Décris le rôle de la conception web adaptative, le rapport entre les pixels CSS et les pixels de l’appareil, et pourquoi chaque page adaptative a besoin de la balise meta de la zone d’affichage.
    • Dimensionne le texte et les boîtes avec des unités relatives
      Utilise les pourcentages, em, rem et ch pour que les boîtes suivent leur conteneur et que le texte suive le réglage de taille de police du lecteur.
    • Utilise les unités relatives à la zone d’affichage et le dimensionnement fluide
      Dimensionne les éléments par rapport à la zone d’affichage avec vw, vh et les unités plus récentes pour les petites, grandes et dynamiques zones d’affichage, puis fixe des bornes avec min(), max() et clamp().
  2. Écris des requêtes média, crée des styles d’abord pour les mobiles avec des points de rupture choisis selon le contenu, et rends les mises en page avec Flexbox et les grilles adaptatives à l’écran.
    • Écris des requêtes média
      Utilise les types de média, les conditions de largeur, les opérateurs logiques et d’autres caractéristiques média, et place correctement les requêtes média dans la cascade.
    • Conçois d’abord pour les mobiles avec des points de rupture fondés sur le contenu
      Écris les styles de base pour les petits écrans, ajoute des requêtes min-width à mesure que l’espace augmente et place les points de rupture là où le contenu en a besoin.
    • Rends adaptatives les mises en page avec Flexbox et les grilles CSS
      Modifie les mises en page aux points de rupture et utilise des modèles intrinsèques avec les grilles et Flexbox qui s’adaptent sans requête média.
  3. Déclare des conteneurs de requête, mets en forme les composants avec des requêtes et des unités de conteneur, et choisis entre les requêtes média, les requêtes de conteneur et les mises en page intrinsèques.
    • Configure des conteneurs et écris des requêtes de conteneur
      Déclare un conteneur de requête avec container-type, écris des règles @container, nomme les conteneurs et évite les erreurs courantes de configuration.
    • Dimensionne avec les unités de requête de conteneur et choisis l’outil adapté
      Utilise les unités de requête de conteneur pour les dimensions qui suivent un conteneur, et décide quand utiliser une requête média, une requête de conteneur ou une mise en page intrinsèque.
  4. Garde les images et les médias intégrés dans leurs conteneurs, laisse le navigateur choisir un fichier adapté avec srcset et sizes, et modifie le cadrage ou le format avec l’élément picture.
    • Rends les images et les médias intégrés redimensionnables
      Empêche les images et les vidéos de déborder, conserve leurs proportions, réserve de l’espace avant leur chargement et contrôle le recadrage avec object-fit.
    • Laisse le navigateur choisir la taille d’image avec srcset et sizes
      Propose la même image dans plusieurs fichiers, indique sa largeur d’affichage et prévois le fichier que le navigateur charge.
    • Modifie le cadrage ou le format avec l’élément picture
      Utilise picture et source pour afficher un cadrage différent selon la largeur ou pour proposer des formats d’image modernes avec une solution de repli.
  5. Vérifie les pages à différentes largeurs, avec différents niveaux de zoom et sur de vrais appareils, repère et corrige les débordements, et adapte-les à l’entrée tactile et aux réglages du lecteur.
    • Teste différentes largeurs et corrige les débordements
      Utilise les outils de conception adaptative du navigateur et de vrais appareils, vérifie la redistribution à 320 pixels CSS et recherche les causes du défilement horizontal.
    • Tiens compte du tactile, du zoom et des préférences des utilisateurs
      Dimensionne les contrôles pour les doigts, évite les interactions accessibles uniquement au survol, prends en charge le zoom et l’orientation, et adapte-toi à la réduction des animations, au thème clair ou sombre et à l’impression.

Conception web adaptative : cours

5 chapitres

1

Prépare une page pour qu’elle s’adapte à tous les écrans

Un bon comportement adaptatif commence par l’espace dont le navigateur pense disposer et par la référence que suit chaque dimension. Configure la zone d’affichage mobile, distingue les pixels CSS des points de l’écran, puis choisis les unités pour le texte, les boîtes et les sections de pleine hauteur. Un conteneur qui peut rétrécir et un texte qui respecte les réglages du lecteur donnent une base fiable aux changements de mise en page ultérieurs.

1.1 Une page, de nombreuses largeurs d’écran

La conception adaptative permet à une page HTML de s’adapter lorsque l’espace disponible change. Un téléphone tenu verticalement, une tablette tournée à l’horizontale et une fenêtre d’ordinateur redimensionnée doivent tous présenter un texte lisible, des contrôles utilisables et des images adaptées. Tu conçois pour une plage continue de largeurs, y compris celles qui se trouvent entre les tailles d’appareils familières.

Ethan Marcotte a introduit le terme en 2010 autour de trois techniques : les mises en page fluides, les images redimensionnables et les requêtes média. Flexbox, les grilles, les requêtes de conteneur et le balisage des images adaptatives complètent désormais ces outils. Chacun résout une partie différente du problème ; une page demande plus qu’un seul réglage.

Compter les bons pixels

Un pixel CSS est une unité de mise en page, qui ne correspond pas nécessairement à un point de l’écran. CSS définit 96px comme l’équivalent de 1in ; sur un écran, ce rapport ne garantit pas une mesure physique d’un pouce. Un écran à haute densité utilise plusieurs pixels de l’appareil pour chaque pixel CSS. Le rapport de pixels de l’appareil décrit cette relation.

Un téléphone large de 390 pixels CSS avec un rapport de 3 compte 1 170 pixels de l’appareil en largeur. Une requête de largeur voit toujours 390px. Les points supplémentaires aident à dessiner du texte et des images nets ; ils ne donnent pas trois fois plus d’espace à la mise en page. Cette distinction compte lorsque tu choisis ensuite les fichiers image.

La zone d’affichage est la partie du navigateur utilisée pour afficher la page, sans ses barres d’outils. Redimensionner une fenêtre ou tourner un appareil change l’espace disponible. Sur téléphone, l’apparition et la disparition des barres d’outils peuvent aussi modifier la hauteur visible.

Indiquer la largeur prévue aux navigateurs mobiles

Les navigateurs mobiles peuvent mettre en page une page non configurée dans une large zone d’affichage virtuelle, souvent d’environ 980 pixels CSS, puis la réduire pour l’écran. Sur un téléphone de 390px, l’échelle est d’environ 0,4. Un texte déclaré à 16px paraît alors mesurer environ 6,4px de haut, et une requête pour une largeur étroite peut ne jamais correspondre car la zone d’affichage utilisée pour la mise en page reste large.

Place ceci dans le <head> du document :

<meta name="viewport" content="width=device-width, initial-scale=1">

width=device-width demande la largeur de l’appareil en pixels CSS. initial-scale=1 démarre au zoom normal. Après l’avoir ajouté, recharge la page dans une vue de navigateur de la taille d’un téléphone et vérifie le texte ainsi que les requêtes de largeur actives.

Laisse le zoom disponible. N’ajoute pas user-scalable=no ni maximum-scale=1. Les lecteurs malvoyants ont besoin d’agrandir le contenu ; le texte doit pouvoir être agrandi à 200 % sans perte de contenu ni de fonctionnalité. Certains navigateurs mobiles ignorent les restrictions de zoom, mais la page doit elle-même prendre en charge le zoom.

Vérifier aussi la mise en page

La balise de la zone d’affichage ne modifie pas une boîte de largeur fixe. Une .page avec width: 960px dépasse toujours une zone d’affichage de 390px. Remplace les largeurs rigides par des largeurs fluides bornées, rends les médias redimensionnables et ajoute des changements de mise en page là où le contenu en a besoin.

Pour déterminer pourquoi une page mobile est minuscule, cherche d’abord la balise de la zone d’affichage dans le <head>. Pour déterminer pourquoi une page de taille normale défile horizontalement, inspecte les boîtes qui dépassent la largeur disponible. Ces symptômes indiquent des causes différentes.

Points clés

  • Les pages adaptatives s’ajustent sur une plage continue de largeurs.
  • La mise en page utilise des pixels CSS ; le rapport de pixels de l’appareil décrit la densité de l’écran.
  • Place la balise meta de la zone d’affichage dans l’en-tête du document.
  • Laisse le zoom activé et rends redimensionnable le contenu de largeur fixe.

1.2 Des dimensions qui suivent le texte et les conteneurs

Choisis une unité en te demandant ce que la dimension doit suivre. Une colonne suit généralement son bloc englobant. La marge intérieure d’un bouton peut suivre son texte. La longueur des lignes d’un paragraphe suit la police. La bonne référence permet aux changements de fonctionner ensemble.

UnitéRéférenceApplication utile
%Une largeur en pourcentage suit la largeur du bloc englobantBoîtes et colonnes fluides
emTaille de police du parent pour font-size ; taille propre à l’élément pour les autres propriétésMarges intérieures des boutons et icônes
remTaille de police de l’élément racineTexte et espacements communs
chLargeur du glyphe « 0 » de la policeLimite de longueur de ligne pour la lisibilité
pxPixels CSS de référenceBordure fine
Pourcentages et modèle de boîte

Une boîte avec width: 50% mesure 300px de large dans un bloc englobant de 600px et 180px dans un bloc de 360px. En écriture horizontale normale, les marges intérieures et extérieures en pourcentage, y compris celles du haut et du bas, utilisent elles aussi la largeur du bloc englobant. Ainsi, padding-top: 10% dans un parent de 600px de large vaut 60px.

La hauteur fonctionne autrement. Une hauteur en pourcentage demande une hauteur de référence définie. Lorsque la hauteur d’un parent ordinaire provient de son contenu, height: 50% se comporte généralement comme auto. Laisse les boîtes de texte grandir avec leur contenu au lieu de les contrôler avec des hauteurs en pourcentage.

Utilise un conteneur fluide avec un maximum :

.page {
  box-sizing: border-box;
  width: 100%;
  max-width: 70rem;
  margin-inline: auto;
  padding-inline: 1rem;
}

Sur un écran étroit, la boîte remplit la largeur disponible, avec les marges intérieures à l’intérieur. Sur un grand écran, sa largeur s’arrête à 70rem et les marges automatiques en ligne la centrent. Avec une taille racine de 16px, sa largeur extérieure maximale est de 1 120px. border-box inclut les marges intérieures et les bordures dans la largeur déclarée ; avec content-box, une largeur de 100 % plus les marges intérieures déborderait. Une largeur fixe width: 70rem empêcherait aussi la boîte de rétrécir.

Par exemple, un élément englobant border-box de 340px de large avec 16px de marge intérieure de chaque côté laisse 308px à son contenu en l’absence de bordure. La largeur déclarée décrit l’extérieur de cette boîte. Si tu passes la même déclaration à content-box, le contenu seul mesure 340px et la largeur extérieure devient 372px. Inspecter ces différentes largeurs dans les outils de développement facilite le repérage des débordements dus aux marges intérieures.

Laisser les réglages du texte se transmettre

Laisse la taille de police racine à la valeur par défaut du lecteur ou utilise un pourcentage comme 100%. Avec une taille racine de 16px, 1.5rem vaut 24px ; avec une taille de 20px, il vaut 30px. Une règle fixe html { font-size: 16px; } empêche cette préférence de police par défaut de se transmettre aux dimensions relatives à la racine.

Pour font-size, em utilise la taille de police du parent. Les tailles de listes imbriquées définies chacune à 1.2em se multiplient donc : 16px devient 19,2px, puis 23,04px. Utilise rem lorsque tous les niveaux d’imbrication doivent garder la même taille.

Dans les autres propriétés, em utilise la taille de police propre à l’élément. Un bouton avec padding: 0.5em 1em voit ses marges intérieures grandir avec son texte. Cela garde un espacement proportionné sans point de rupture distinct.

Pour les paragraphes, max-width: 65ch fournit une limite de lecture utile. L’unité mesure la largeur de « 0 » : elle ne compte donc pas exactement les caractères dans une police proportionnelle. Environ 45 à 75 caractères par ligne est une recommandation courante ; vérifie la police et le texte réels dans le navigateur.

Points clés

  • Les pourcentages font suivre aux largeurs celle de leur bloc englobant.
  • Utilise border-box pour inclure les marges intérieures dans la largeur déclarée.
  • rem suit la taille de police racine sans multiplication due à l’imbrication.
  • em peut garder l’espacement d’un composant proportionnel à son propre texte.
  • ch permet de limiter la longueur des lignes selon la police.

1.3 Des dimensions fluides avec des bornes utiles

Les unités relatives à la zone d’affichage suivent celle du navigateur même lorsqu’un élément se trouve dans une boîte plus petite. 1vw représente 1 % de sa largeur ; 1vh représente 1 % de sa hauteur. vmin utilise la plus petite dimension et vmax la plus grande. Dans une zone d’affichage de 800px de large, 50vw vaut 400px. Dans une zone de 300px de haut, 70vh vaut 210px.

Cette référence compte. Une barre latérale peut ne mesurer que 260px de large dans une fenêtre de 1 400px. Un enfant avec width: 50vw demande 700px : il ne tiendra donc pas dans cette barre. Utilise un pourcentage lorsque l’enfant doit suivre son parent. Pour un bloc ordinaire de pleine largeur, préfère width: 100% : 100vw peut inclure la largeur d’une barre de défilement sur ordinateur et créer un défilement horizontal.

Choisir la hauteur mobile voulue

Les barres d’outils des navigateurs mobiles peuvent réduire la zone visible de la page. Les unités de hauteur relatives à la zone d’affichage distinguent trois états :

UnitéHauteur suiviePrincipal compromis
svhPetite zone d’affichage, barres d’outils visiblesTaille stable qui tient dans cet état
lvhGrande zone d’affichage, barres d’outils masquéesPeut passer derrière les barres visibles
dvhZone d’affichage dynamique actuellePeut changer de taille pendant le défilement

vh correspond à la grande zone d’affichage. Il existe aussi des variantes de largeur comme svw, lvw et dvw. Pour une grande section d’ouverture, min-height: 100svh fixe un minimum stable tout en permettant à un contenu plus long de grandir. Une height fixe laisse le contenu déborder lorsqu’il devient plus haut. Les unités dynamiques peuvent suivre les changements des barres d’outils, mais les mises à jour peuvent se faire par étapes et déplacer la mise en page.

Choisis la référence de hauteur selon le comportement voulu. Une section d’ouverture stable peut utiliser la petite zone d’affichage même après la disparition des barres d’outils ; elle n’a pas besoin de s’étirer à nouveau simplement parce que davantage d’espace devient visible. Un panneau destiné à suivre cet espace changeant peut utiliser les unités dynamiques, en acceptant les mouvements possibles. Dans les deux cas, une hauteur minimale permet au contenu supplémentaire d’allonger la section dans le flux normal.

Borner une valeur fluide

min() sélectionne la plus petite valeur et peut plafonner une largeur : width: min(100%, 40rem) remplit le parent jusqu’à atteindre 40rem. max() sélectionne la plus grande valeur et fournit un minimum. clamp() donne un minimum, une valeur préférée et un maximum, dans cet ordre.

.title {
  font-size: clamp(1rem, 0.5rem + 2vw, 2rem);
}

Avec une taille racine de 16px, le minimum est de 16px, la taille préférée est de 8px plus 2 % de la largeur de la zone d’affichage, et le maximum est de 32px. Examinons les bornes :

  1. À 375px, la taille préférée est de 15,5px : le minimum de 16px s’applique donc.
  2. À 1 000px, la taille préférée est de 28px, dans les limites.
  3. À 1 400px, la taille préférée est de 36px : le maximum de 32px s’applique donc.

Les mêmes fonctions acceptent des calculs comme min(100% - 2rem, 70rem). Utilise des valeurs de longueur compatibles et des espaces autour de l’opérateur de soustraction.

Un texte dimensionné uniquement en vw peut devenir minuscule sur les écrans étroits et immense sur les grands écrans. Le zoom sur ordinateur réduit aussi la largeur de la zone d’affichage en pixels CSS, ce qui peut annuler l’agrandissement de ce texte. Inclus une part relative à la police et des bornes utiles, puis teste l’agrandissement du texte : une expression mixte rem/vw ne garantit pas à elle seule un agrandissement complet à 200 %.

Points clés

  • Les unités relatives à la zone d’affichage suivent la fenêtre, même dans un parent étroit.
  • Utilise svh pour la petite zone d’affichage et dvh pour la hauteur visible changeante.
  • min() plafonne une valeur ; max() lui donne un minimum.
  • clamp() définit un minimum, une valeur préférée et un maximum.
  • Teste la typographie fluide avec le zoom et différentes largeurs de fenêtre.
2

Adapte les mises en page avec des requêtes média

Une mise en page doit fonctionner pendant que la fenêtre change, y compris entre ses principales dispositions. Écris des conditions qui appliquent le CSS au bon moment, pars d’une page étroite utilisable et ajoute des colonnes lorsque le contenu a de la place. Flexbox et les grilles peuvent gérer automatiquement de nombreux changements ; les points de rupture explicites servent lorsque la disposition elle-même doit changer.

2.1 Des conditions qui changent les règles CSS

Une requête média applique du CSS lorsqu’une condition portant sur la sortie, la zone d’affichage ou les préférences du lecteur est vraie. Le navigateur vérifie à nouveau la condition lorsque les paramètres concernés changent : redimensionner une fenêtre peut donc changer les styles sans recharger la page.

.heading { font-size: 1.25rem; }

@media (min-width: 40em) {
  .heading { font-size: 2rem; }
}

Avec la valeur habituelle de 16px par défaut dans le navigateur, 40em vaut 640px. Le titre plus grand s’applique à partir de cette largeur. Dans les requêtes média, em et rem utilisent la taille de police initiale du navigateur, et non une taille définie par l’auteur sur <html>. Pour un lecteur dont la valeur par défaut est de 20px, le même changement se produit à 800px.

Lire précisément les conditions

min-width inclut sa borne : 600px correspond à min-width: 600px. max-width inclut aussi sa borne. La syntaxe d’intervalle rend la comparaison explicite :

@media (width >= 600px) { /* wider layout */ }
@media (600px <= width < 900px) { /* middle band */ }

Si tu associes max-width: 600px à min-width: 600px, les deux correspondent à 600px. Utiliser 599px et 600px laisse au contraire un intervalle sans correspondance pour les largeurs fractionnaires comme 599,5px. Des requêtes de largeur minimale croissante évitent cet intervalle ; des intervalles complémentaires comme < 600px et >= 600px sont une autre solution.

Les types de média indiquent la sortie : screen, print ou la valeur par défaut all. @media print peut retirer la navigation et utiliser un texte sombre sur papier blanc. Les conditions se combinent de plusieurs façons utiles :

FormeSignification
screen and (min-width: 40em)Le type de sortie et la largeur doivent tous deux correspondre
(max-width: 30em), printUne sortie étroite ou l’impression correspond
not printLa sortie n’est pas l’impression

only n’a pas d’effet utile dans les navigateurs actuels. La largeur et la hauteur décrivent la zone d’affichage ; orientation: portrait signifie que sa hauteur est au moins égale à sa largeur. D’autres caractéristiques testent la précision de l’entrée, le survol, la résolution, la réduction des animations et le thème clair ou sombre. Une zone d’affichage en paysage ne dit pas si le lecteur dispose d’une souris.

Dans une condition pratique, @media (hover: hover) and (pointer: fine) exige une entrée principale capable de survoler et de cibler avec précision. Une fenêtre étroite utilisée à la souris peut y correspondre, tandis qu’un appareil tactile large peut ne pas y correspondre. Utilise la requête pour des effets de pointeur facultatifs ; garde l’action sous-jacente accessible par les contrôles habituels de la page.

Garder la cascade à l’esprit

Une requête média n’augmente pas la spécificité d’un sélecteur. Dans une feuille de style normale avec des règles de même spécificité, la dernière déclaration correspondante l’emporte. Si la règle de base .heading apparaît après la règle pour grand écran ci-dessus, elle l’emporte aussi aux grandes largeurs. Place d’abord les règles de base, puis les requêtes qui les modifient.

Tu peux aussi associer une condition en HTML. <link rel="stylesheet" href="print.css" media="print"> applique ses règles à l’impression, mais un navigateur peut tout de même télécharger le fichier avec une priorité inférieure. L’attribut media d’un élément <source> utilise des conditions pour choisir une source d’image.

Points clés

  • Les requêtes média réagissent à la sortie, aux caractéristiques de la zone d’affichage et aux préférences de l’utilisateur.
  • min-width et max-width incluent leurs valeurs de borne.
  • and exige toutes les conditions ; une virgule propose des alternatives.
  • Les règles d’une requête obéissent toujours à la cascade et à la spécificité habituelles.
  • Les unités relatives des requêtes utilisent la taille de police initiale du navigateur.
  • Des intervalles complémentaires évitent les espaces sans correspondance aux largeurs fractionnaires.

2.2 Faire évoluer la mise en page à mesure que l’espace augmente

Le CSS conçu d’abord pour les mobiles commence par la mise en page étroite, sous forme de règles ordinaires hors de toute requête. Des requêtes de largeur minimale ajoutent ensuite des changements lorsque l’espace le permet. Cela convient au flux normal du document : les blocs s’empilent déjà verticalement, si bien que la page de base demande souvent peu de code de mise en page.

Le CSS conçu d’abord pour les ordinateurs commence par les règles pour grand écran et utilise des requêtes de largeur maximale pour les modifier. Les deux approches peuvent fonctionner, mais la conception d’abord pour les mobiles rend généralement la base et chaque changement ultérieur plus faciles à suivre.

Partir d’une colonne
.cards {
  display: grid;
  gap: 1rem;
}

@media (min-width: 40em) {
  .cards { grid-template-columns: 1fr 1fr; }
}

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

Avec une valeur par défaut de 16px, les changements se produisent à 640px et 1 024px. Une zone d’affichage de 500px montre une colonne. À 800px, la première requête correspond et donne deux colonnes. À 1 200px, les deux requêtes correspondent ; la dernière règle donne trois colonnes.

La requête pour la plus grande largeur ne désactive pas la précédente. Si tu inverses leur ordre, la règle à 40em vient en dernier et réduit la mise en page large à deux colonnes. Garde les requêtes de largeur minimale dans l’ordre croissant lorsqu’elles modifient la même propriété avec la même spécificité.

Trouver le point de rupture dans le contenu

Un point de rupture est l’endroit où une requête modifie la mise en page. Commence avec le contenu réel dans une fenêtre étroite, puis élargis-la lentement. Repère une navigation qui passe maladroitement à la ligne, des paragraphes qui deviennent trop longs ou des cartes qui s’étirent au-delà d’une largeur de lecture utile. Ajoute un changement là où il améliore ce contenu.

Ne choisis pas un point de rupture simplement parce qu’un appareil familier a cette largeur. Les écrans varient, les fenêtres d’ordinateur peuvent avoir n’importe quelle taille et une police plus grande peut amener la même navigation à demander plus d’espace. Des points de rupture en unités relatives peuvent aider la mise en page à réagir à la taille de texte par défaut du lecteur.

Après chaque changement, teste les deux côtés du point de rupture et plusieurs largeurs entre les changements. Une mise en page correcte uniquement à 375px, 768px et 1 280px a encore de nombreuses occasions d’échouer. Les largeurs fluides, le retour à la ligne et les colonnes automatiques de grille gèrent une grande partie de l’espace intermédiaire.

Teste ensemble la navigation et la liste de cartes après avoir ajouté une barre latérale à la page. La fenêtre est devenue plus large, mais la colonne principale peut être devenue plus étroite car elle partage désormais cet espace. Une disposition de cartes qui fonctionnait juste sous le point de rupture de la page peut échouer juste au-dessus. C’est un bon endroit pour laisser les cartes passer à la ligne ou s’organiser en colonnes automatiques, tandis que la page utilise une requête explicite.

Garder un contenu utile et des téléchargements adaptés

Les utilisateurs de téléphone ont eux aussi besoin du contenu de la page. Si une explication secondaire prend trop de place, empile-la plus bas ou place-la dans un élément natif dépliable <details> que les lecteurs peuvent ouvrir. Ne retire pas des informations nécessaires simplement pour rendre une capture d’écran étroite plus ordonnée.

Commencer par une page étroite aide aussi à choisir une page par défaut légère. Masquer une grande image avec CSS n’empêche pas forcément son téléchargement ; utilise le balisage des images adaptatives pour proposer des fichiers adaptés. Une page lisible à une colonne avec une image plus petite constitue un bon point de départ ; les mises en page plus larges ajoutent ensuite de l’espace et réorganisent le contenu.

Points clés

  • Écris les règles de base pour écran étroit hors des requêtes.
  • Ajoute les changements min-width correspondants dans l’ordre croissant.
  • Place les points de rupture là où le contenu demande un changement de mise en page.
  • Teste les largeurs entre les points de rupture, y compris avec un texte plus grand.
  • Réorganise le contenu utile pour les téléphones et envoie des fichiers image adaptés.

2.3 Des lignes et des colonnes adaptatives

Une mise en page peut s’adapter grâce à une requête explicite ou à ses propres règles de dimensionnement. Utilise une requête lorsque la disposition doit changer à un point choisi. Utilise une mise en page intrinsèque lorsque les éléments doivent simplement tenir dans l’espace disponible.

Laisser la grille compter les colonnes
.tiles {
  display: grid;
  grid-template-columns:
    repeat(auto-fit, minmax(min(15rem, 100%), 1fr));
  gap: 1rem;
}

Avec une taille racine de 16px, chaque colonne vise une largeur d’au moins 240px. La grille en place autant que possible, soustrait les espacements, puis partage la largeur restante avec 1fr. Dans un conteneur de 1 000px, quatre colonnes de 240px et trois espacements de 16px demanderaient 1 008px : seules trois colonnes tiennent donc. Chacune reçoit environ 322,7px. Un conteneur de 700px obtient deux colonnes de 342px ; un conteneur de 360px en obtient une.

Le min(15rem, 100%) intérieur est utile lorsque le conteneur mesure moins de 240px de large. Il permet au minimum de devenir la largeur disponible. Sans lui, le minimum de 240px provoquerait un débordement. auto-fit réduit les pistes vides à zéro, ce qui permet à quelques éléments de s’étendre ; auto-fill conserve les pistes vides et peut laisser ces éléments plus étroits.

Laisser les éléments flexibles passer à la ligne
.links {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}
.links > * { flex: 1 1 15rem; }

Chaque élément part d’une base de 15rem, peut rétrécir ou grandir et passe à la ligne lorsque la ligne ne peut plus accueillir d’éléments. Chaque ligne partage son propre espace restant. Deux éléments sur la dernière ligne peuvent donc devenir plus larges que les éléments au-dessus. Une grille convient mieux lorsque les largeurs des colonnes doivent s’aligner d’une ligne à l’autre. La navigation peut aussi passer à la ligne, ou une requête peut changer sa flex-direction en column.

Modifier toute la page si nécessaire

Commence la page dans le flux normal. Ajoute ensuite une disposition avec barre latérale :

@media (min-width: 48em) {
  .page {
    display: grid;
    grid-template-columns: 16rem minmax(0, 1fr);
    gap: 1rem;
  }
}

Avec la valeur habituelle de 16px par défaut, cela commence à 768px. La première colonne est la barre latérale ; la seconde prend l’espace restant. Le minimum de zéro permet à la piste principale de rétrécir ; son contenu doit tout de même pouvoir passer à la ligne ou défiler correctement. Les zones de grille nommées peuvent exprimer une disposition plus complexe.

Garde le HTML dans un ordre de lecture logique. La propriété order de Flexbox et le placement dans la grille changent l’emplacement visuel des éléments, mais le focus clavier et les lecteurs d’écran suivent toujours l’ordre du code source. Teste en parcourant les liens avec la touche de tabulation après les avoir réorganisés.

Un tableau de données large peut avoir besoin de sa structure bidimensionnelle. Place-le dans un élément englobant à défilement local avec overflow-x: auto, tabindex="0", role="region" et un nom accessible comme aria-label="Event schedule". Seule la région du tableau doit défiler horizontalement ; le reste de la page doit toujours se redistribuer.

Points clés

  • Les mises en page intrinsèques se redistribuent sans point de rupture.
  • auto-fit et minmax() ajustent le nombre de colonnes et partagent l’espace disponible.
  • Limite le minimum d’une colonne à 100 % pour éviter le débordement d’un conteneur étroit.
  • Les lignes flexibles partagent l’espace indépendamment ; la grille aligne les colonnes entre les lignes.
  • La réorganisation visuelle ne change ni l’ordre de lecture HTML ni l’ordre de tabulation.
  • Place les tableaux larges dans une région défilante nommée et accessible.
3

Fais adapter les composants à leur conteneur

Un composant peut apparaître dans une large colonne principale ou dans une barre latérale étroite sur la même page. Sa propre largeur disponible peut compter davantage que celle de la fenêtre. Déclare un conteneur de mesure, modifie les éléments qu’il contient et utilise des dimensions relatives au conteneur lorsqu’elles conviennent au composant. Choisir la bonne référence permet à une carte réutilisable de rester utile où qu’elle soit placée.

3.1 Une carte qui suit son propre espace

Une requête sur la largeur de la zone d’affichage donne la même réponse pour chaque composant d’une page. Cela peut être inadapté à une carte réutilisable : la fenêtre peut mesurer 1 400px de large alors que la barre latérale ne donne que 300px à la carte. Une requête de taille de conteneur mesure l’espace disponible d’un ancêtre : la carte peut ainsi s’adapter à son emplacement réel.

Déclarer un élément englobant, puis mettre en forme son contenu
<div class="card-wrap">
  <article class="card">...</article>
</div>
.card-wrap { container-type: inline-size; }
.card { display: grid; gap: 1rem; }

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

En écriture horizontale, inline-size correspond à la largeur. Cette valeur déclare que l’élément englobant peut répondre aux requêtes sur sa taille en ligne. Avec une police racine de 16px, 25rem vaut 400px. Une carte dans un élément englobant de 300px reste empilée ; une autre dans un élément de 500px place son image à côté de son texte. Les deux peuvent se trouver sur la même page en même temps.

Une requête mesure un ancêtre de l’élément mis en forme. Si tu places container-type seulement sur .card puis essaies de modifier cette même carte, la requête cherche toujours parmi ses ancêtres. Utilise un élément englobant comme boîte de mesure et la carte intérieure comme boîte à mettre en forme.

Sélectionner l’ancêtre voulu

Une requête de taille sans nom utilise le conteneur de taille ancêtre approprié le plus proche. Dans une mise en page imbriquée, il peut s’agir d’un élément englobant intérieur. Un nom te permet de choisir un ancêtre particulier :

.panel { container: sidebar / inline-size; }

@container sidebar (width >= 30rem) {
  .panel-title { font-size: 1.5rem; }
}

La propriété raccourcie définit à la fois le nom et le type. S’il n’existe aucun ancêtre approprié, la requête ne correspond pas ; les styles de base continuent de s’appliquer. Les conditions peuvent utiliser des intervalles et des opérateurs logiques comme and, or et not.

Vérifier que le conteneur obtient sa taille

Le confinement empêche la dimension interrogée de dépendre du contenu même que la requête peut remettre en forme. Place container-type sur une boîte dont la largeur provient de la mise en page du parent, comme un bloc, une zone de grille ou un élément flexible qui grandit. Une boîte qui se réduit normalement à son contenu peut s’effondrer lorsque ce contenu ne contribue plus à sa taille en ligne.

container-type: size prend en charge les requêtes de largeur et de hauteur, mais confine aussi le dimensionnement en bloc. Sa hauteur doit être définie indépendamment ; sinon elle peut s’effondrer. Pour des cartes ordinaires, inline-size permet à la hauteur de continuer à suivre le contenu. La valeur par défaut normal ne crée pas de conteneur pour les requêtes de taille.

Les caractéristiques de taille comprennent la largeur, la hauteur, la taille en ligne, la taille de bloc, le rapport largeur-hauteur et l’orientation, à condition que le type de conteneur choisi prenne en charge les dimensions concernées. Les principaux navigateurs actuels prennent en charge les requêtes de taille. Garde une mise en page de base empilée et utilisable pour que la carte fonctionne encore si un navigateur ignore l’amélioration.

Points clés

  • Place container-type sur un élément englobant ancêtre.
  • Les requêtes inline-size conviennent aux cartes dont la hauteur doit suivre le contenu.
  • Une requête de conteneur met en forme les descendants, pas sa propre boîte de mesure.
  • Nomme un conteneur lorsque des ancêtres imbriqués risquent de changer la référence voulue.
  • Donne une taille à un conteneur de requête par la mise en page qui l’entoure.

3.2 Choisir la référence de taille adaptée

Une page adaptative peut combiner trois approches : la redistribution automatique, les conditions sur la zone d’affichage et les conditions sur les composants. Détermine les informations dont la mise en page a besoin avant de choisir une requête.

BesoinOutil utileRaison
Faire tenir des cartes répétées sur une ligneGrille intrinsèque ou Flexbox avec retour à la ligneLes éléments peuvent se redistribuer sans règle de seuil
Changer une disposition avec barre latérale pour toute la pageRequête médiaL’espace disponible dans la fenêtre contrôle la page
Modifier une carte selon son emplacement dans la pageRequête de conteneurLa carte a besoin de la taille de son élément englobant
Respecter la réduction des animations ou l’impressionRequête médiaCe sont des conditions liées à l’utilisateur ou à la sortie
Dimensionner dans un conteneur

Les unités de requête de conteneur représentent des pourcentages d’un conteneur ancêtre approprié. cqw et cqh utilisent la largeur et la hauteur. cqi et cqb utilisent la taille en ligne et la taille de bloc. cqmin et cqmax utilisent respectivement la plus petite et la plus grande des deux dimensions. En écriture horizontale, la taille en ligne est la largeur.

Dans un conteneur admissible de 400px de large, 5cqi vaut 20px. Dans un conteneur de 600px de large, il vaut 30px. Un titre peut ainsi suivre son propre composant, même lorsque la largeur de toute la page reste identique.

Garde des bornes autour du texte :

.card-wrap { container-type: inline-size; }
.card h2 {
  font-size: clamp(1rem, 4cqi, 1.5rem);
}

Avec une taille racine de 16px, un élément englobant de 300px donne une valeur préférée de 12px : le minimum de 16px s’applique donc. À 600px, 4cqi vaut 24px, soit le maximum. Des éléments englobants plus larges ne peuvent pas porter le titre au-dessus de 24px. Teste l’agrandissement ainsi que le redimensionnement de l’élément englobant ; le texte fluide doit rester utilisable lorsque les lecteurs zooment.

Les unités de conteneur choisissent l’ancêtre admissible le plus proche pour la direction mesurée. S’il n’en existe pas, elles se replient sur les unités de la petite zone d’affichage. Un container-type oublié peut donc faire varier le texte avec la fenêtre tout en donnant l’impression de fonctionner. Inspecte les ancêtres lorsqu’une dimension semble suivre le mauvais espace. Le nom d’un conteneur dans une requête ne redirige pas, à lui seul, toutes les unités de conteneur vers cet ancêtre nommé.

Combiner les outils

Une page peut passer à une disposition en colonnes avec barre latérale et contenu principal à 48em grâce à une requête média. Dans la zone principale, une grille automatique peut placer autant de cartes que l’espace le permet. La requête de conteneur propre à une carte peut déplacer son image à côté de son texte seulement lorsque cet emplacement précis est assez large.

Ne remplace pas une requête sur la réduction des animations ou le survol par une requête de conteneur. Les dimensions d’une boîte ne révèlent ni les préférences du lecteur ni son périphérique d’entrée. De même, copier les règles d’une carte dans des requêtes distinctes sur la zone d’affichage pour chaque emplacement lie ce composant réutilisable à chaque mise en page environnante. Laisse son espace local décider du moment où sa disposition change.

Points clés

  • Choisis la redistribution intrinsèque lorsqu’aucun changement de disposition n’est nécessaire.
  • Les requêtes média gèrent les conditions de la page entière et les préférences de l’utilisateur.
  • Les requêtes de conteneur gèrent l’espace disponible pour un composant.
  • Les unités de conteneur utilisent un ancêtre approprié pour chaque direction mesurée.
  • Sans conteneur admissible, les unités de conteneur se replient sur les unités de la petite zone d’affichage.
4

Fournis des images et des médias adaptés à tous les écrans

Les images ont besoin à la fois d’une boîte d’affichage redimensionnable et d’un fichier à télécharger adapté. Préserve leurs proportions, réserve l’espace de chargement et décide quand le recadrage est acceptable. Décris ensuite les résolutions, cadrages et formats proposés pour que le navigateur puisse les choisir. Faire correspondre le balisage des images à la mise en page CSS garde une page nette sur les écrans à haute densité sans téléchargements inutiles.

4.1 Des médias redimensionnables sans déformation

Une image peut être plus large que l’espace que lui donne la mise en page. Commence par une règle qui lui permet de rétrécir tout en conservant ses proportions :

img, video {
  max-width: 100%;
  height: auto;
}

max-width limite la largeur affichée à celle du conteneur sans forcer une petite image à le remplir. width: 100% étirerait un petit logo sur toute la largeur. La hauteur automatique préserve le rapport largeur-hauteur lorsque la largeur change.

Réserver l’espace avant le téléchargement

Garde les attributs de dimensions dans le HTML :

<img src="coast.jpg" width="1200" height="800"
     alt="A rocky coast with a walking path">

Ces dimensions donnent un rapport largeur-hauteur de 3:2, ce qui permet au navigateur de réserver l’espace avant l’arrivée du fichier. Lorsque le CSS affiche l’image à 360px de large, la hauteur correspondante est de 240px. Retirer les attributs parce que l’image est adaptative fait perdre cette information de dimensionnement précoce. Le CSS peut toujours afficher l’image à une taille inférieure aux dimensions des attributs.

Pour un lecteur vidéo intégré, donne à la boîte son propre rapport :

iframe {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

Cela conserve un format de lecteur 16:9 lorsque sa largeur change. Pour le texte, laisse la hauteur dépendre du contenu ; un rapport largeur-hauteur fixe est utile pour les boîtes de médias dont la forme est connue.

Choisir si le recadrage est autorisé

Une miniature de carte doit souvent remplir une boîte uniforme. Donne-lui une largeur et un rapport largeur-hauteur, puis choisis comment l’image source s’y ajuste :

.thumbnail {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: top;
}

cover remplit la boîte et coupe les parties qui dépassent. contain montre toute l’image et peut laisser des bandes vides. La valeur par défaut fill étire l’image jusqu’aux dimensions de la boîte, ce qui peut la déformer. object-position choisit l’alignement utilisé lors de l’ajustement ; l’alignement en haut garde la partie supérieure visible dans cet exemple.

ObjectifRéglage
Montrer un diagramme entierobject-fit: contain
Remplir une boîte de miniature en acceptant un recadrageobject-fit: cover
Préserver les proportions naturelles en réduisant l’imageheight: auto avec une limite de largeur

Pour une comparaison concrète, place une photo de 400 × 200 dans une miniature de 320 × 240. Avec cover, elle est redimensionnée à 480 × 240, puis 160px de sa largeur redimensionnée sont coupés au total. Avec contain, elle est redimensionnée à 320 × 160, laissant au total 80px de hauteur inutilisée. Les deux préservent les proportions de l’image source ; le choix dépend de la nécessité de remplir la boîte ou de garder toute l’image visible.

Les images qui apportent du contenu doivent utiliser <img> avec une alternative textuelle utile. Les arrière-plans CSS conviennent à la décoration ; background-size: cover peut les recadrer pour remplir leur boîte, et les requêtes média peuvent changer le fichier d’arrière-plan.

Pour les images situées sous la première partie visible de la page, loading="lazy" peut différer leur téléchargement jusqu’à ce que le lecteur s’en approche. Laisse l’image principale d’ouverture se charger immédiatement pour qu’elle apparaisse rapidement. Réduire une photo de 4 000 pixels avec CSS télécharge toujours cette photo ; le balisage des images adaptatives est nécessaire pour choisir un fichier plus petit.

Points clés

  • Limite la largeur des médias et préserve leur rapport largeur-hauteur.
  • Garde les attributs width et height pour réserver l’espace de chargement.
  • cover recadre ; contain garde toute l’image visible.
  • Utilise img pour le contenu et les arrière-plans CSS pour la décoration.
  • Charge en différé les images plus bas dans la page, pas l’image principale d’ouverture.
  • La taille d’affichage CSS ne réduit pas le fichier téléchargé.

4.2 Proposer la résolution d’image adaptée

Une photo peut être proposée dans plusieurs fichiers de mêmes contenu et proportions, mais de dimensions différentes en pixels. Le changement de résolution permet au navigateur de choisir un fichier selon la taille d’affichage, la densité de l’écran et ses décisions de chargement. Il évite les transferts de données inutiles tout en conservant assez de détails.

Taille d’affichage fixe : les descripteurs de densité
<img src="logo-200.png"
     srcset="logo-200.png 1x, logo-400.png 2x"
     width="200" height="80" alt="Northwind Books">

Le logo est affiché à 200 pixels CSS de large. Le fichier de 200 pixels convient à un écran de rapport 1 ; celui de 400 pixels fournit deux pixels source par pixel CSS affiché pour un rapport de 2. Cette forme utilise des descripteurs x et ne demande pas d’attribut sizes.

Taille d’affichage variable : les descripteurs de largeur
<img src="park-800.jpg"
     srcset="park-480.jpg 480w,
             park-800.jpg 800w,
             park-1600.jpg 1600w"
     sizes="(min-width: 64em) 50vw, 100vw"
     width="1600" height="1000"
     alt="Trees around a park pond">

Chaque valeur w doit indiquer la largeur réelle du fichier en pixels. Elle ne définit pas de largeur CSS. Le CSS contrôle toujours la boîte, et sizes décrit au navigateur la largeur d’affichage prévue.

La première condition correspondante dans sizes l’emporte. Avec une valeur par défaut de 16px dans le navigateur, l’emplacement mesure 50vw à partir de 1 024px ; en dessous, il mesure 100vw. La dernière longueur, sans condition, sert de repli. Les longueurs peuvent utiliser des unités relatives à la zone d’affichage, des unités en pixels ou relatives à la police, ainsi que des calculs comme calc(100vw - 2rem), mais pas de pourcentages. Lorsque sizes est absent avec des descripteurs de largeur, le navigateur suppose normalement 100vw.

Calculer le niveau de détail nécessaire

Multiplie la largeur d’affichage indiquée par le rapport de pixels de l’appareil. Pour choisir le plus petit fichier suffisant, compare cette valeur cible aux largeurs des fichiers proposés :

  1. Une zone d’affichage de 1 200px avec un rapport de 1 utilise l’emplacement de 50vw : 600 pixels CSS. Le fichier 800w est le premier assez grand.
  2. Une zone d’affichage de 390px avec un rapport de 3 utilise 390 pixels CSS. Il faut 1 170 pixels source : 1600w atteint donc la cible.
  3. La même zone étroite avec un rapport de 2 demande 780 pixels source, ce que fournit 800w.

Les navigateurs peuvent réutiliser un fichier plus grand en cache ou privilégier un fichier plus petit lorsque les conditions de chargement sont limitées. Le balisage fournit des fichiers candidats et des informations de taille, et non un ordre absolu de télécharger un fichier précis.

Les navigateurs commencent à télécharger les images avant de disposer de la mise en page CSS complète. C’est pourquoi l’indication de taille appartient au HTML. Si le CSS donne à une image la moitié de la zone d’affichage mais que sizes indique 100vw, le navigateur peut télécharger un fichier trop grand. Mets sizes à jour lorsque la mise en page change. Garde src comme solution de repli et utilise une seule alternative textuelle alt. Des cadrages différents nécessitent <picture>, car les fichiers proposés pour le changement de résolution doivent rester des versions interchangeables de la même image.

Points clés

  • Utilise les descripteurs x pour une taille d’affichage fixe et différentes densités.
  • Utilise les descripteurs w pour les largeurs des fichiers et sizes pour l’emplacement prévu.
  • La première condition sizes correspondante l’emporte ; les pourcentages ne sont pas des longueurs d’emplacement.
  • Estime la largeur source à partir de la largeur d’affichage et du rapport de pixels de l’appareil.
  • Garde sizes cohérent avec le CSS ; le navigateur reste libre de son choix.

4.3 Choisir un cadrage ou un format d’image

Réduire les dimensions en pixels d’une photo conserve la même composition. Un téléphone a parfois besoin d’une composition différente : sur une photo large d’une scène, la personne qui parle peut devenir trop petite pour être reconnue. La direction artistique modifie le cadrage ou l’image pour que le sujet important reste bien visible.

L’élément <picture> fournit des sources classées par ordre de priorité, suivies d’un élément <img> obligatoire :

<picture>
  <source media="(min-width: 50em)"
          srcset="stage-wide.jpg" width="1600" height="900">
  <img src="stage-close.jpg" width="800" height="1000"
       alt="A speaker presenting on stage">
</picture>

Avec une valeur par défaut de 16px, le cadrage large est sélectionné à partir de 800px ; en dessous, l’image utilise le cadrage rapproché. <img> reste l’élément affiché. Il fournit la solution de repli et l’alternative textuelle, et c’est lui que ton CSS d’image met en forme. Un <picture> sans <img> n’affiche aucune image.

Placer les conditions les plus restrictives en premier

Le navigateur choisit la première source prise en charge dont les conditions correspondent. Supposons que tu proposes des cadrages à 30em et à 60em. Place d’abord le minimum de 60em, puis celui de 30em, puis la solution de repli. Si 30em vient en premier, cette condition correspond aussi à un très grand écran et empêche le navigateur d’atteindre celle de 60em. Des intervalles sans chevauchement peuvent aussi clarifier le choix prévu.

La condition media d’une source est une instruction de sélection. En comparaison, les fichiers candidats ordinaires de srcset et sizes donnent au navigateur des informations pour choisir une résolution adaptée. Utilise la direction artistique lorsque la composition doit changer ; utilise le changement de résolution lorsque le contenu de l’image reste identique.

Proposer les formats par ordre de préférence
<picture>
  <source type="image/avif" srcset="hall.avif">
  <source type="image/webp" srcset="hall.webp">
  <img src="hall.jpg" width="1200" height="800"
       alt="Rows of seats in a lecture hall">
</picture>

Un navigateur qui prend en charge le premier format peut l’utiliser ; sinon, il essaie le choix suivant pris en charge et finit par se replier sur le JPEG. AVIF et WebP fournissent souvent des fichiers plus petits à qualité visuelle comparable. L’attribut type permet au navigateur d’ignorer les formats non pris en charge sans les télécharger pour le vérifier.

Chaque source peut aussi proposer plusieurs fichiers de largeurs différentes avec son propre srcset et son propre sizes. Cela combine le cadrage ou le format choisi avec le changement de résolution. Lorsque les cadrages issus de la direction artistique ont des proportions différentes, les attributs de dimensions sur les sources permettent au navigateur de réserver l’espace adapté à chacun.

Écris l’alternative textuelle une seule fois, sur <img>, et assure-toi qu’elle décrit chaque cadrage. Si un cadrage rapproché retire une deuxième personne, une alternative qui nomme deux personnes ne convient plus. Pour une image purement décorative, utilise alt="" afin qu’elle n’ajoute pas de contenu parlé inutile.

Points clés

  • picture a besoin d’un img pour l’affichage, le repli et l’alternative textuelle.
  • Utilise la direction artistique lorsque la composition change.
  • La première source correspondante prise en charge l’emporte : l’ordre des sources compte.
  • Le type d’une source peut proposer un format préféré avec une solution de repli.
  • Chaque cadrage doit correspondre à l’unique alternative textuelle.
5

Teste et améliore les pages adaptatives

Une page peut paraître correcte sur une capture d’écran et échouer avec un titre plus long, un texte plus grand ou un autre périphérique d’entrée. Teste ses largeurs et ses niveaux de zoom, repère les boîtes qui débordent et inspecte les images téléchargées. Les cibles tactiles, les préférences d’animation, les thèmes de couleur et l’impression complètent les vérifications qui rendent le même contenu utilisable dans différentes conditions.

5.1 Trouver la largeur à laquelle la page échoue

Une page adaptative doit être testée sur une plage de largeurs, et pas seulement sur quelques appareils nommés. Ouvre la vue adaptative du navigateur, définis une zone d’affichage étroite proche de 320px et élargis-la jusqu’à une grande fenêtre. Observe les titres, la navigation, les cartes et les bords des images pendant le changement. Teste juste en dessous, à la valeur exacte et juste au-dessus de chaque point de rupture.

Les outils de développement peuvent émuler les dimensions de la zone d’affichage, le rapport de pixels de l’appareil et l’entrée tactile. Chrome et Edge proposent une barre d’outils des appareils ; Firefox et Safari proposent des modes de conception adaptative. L’émulation est utile, mais les vrais appareils peuvent différer par le comportement des barres d’outils, le tactile, les polices et les performances. Vérifie sur un vrai téléphone et une vraie tablette dans les deux orientations, ainsi que dans une fenêtre d’ordinateur redimensionnée.

Vérifier la redistribution et l’agrandissement du texte

Le critère de redistribution de niveau AA des WCAG demande que le contenu ordinaire fonctionne à une largeur de 320 pixels CSS sans exiger de défilement dans deux directions. Une zone d’affichage de 1 280px de large avec un zoom de 400 % fournit cette largeur. Définis une zone d’affichage adaptative de 320px pour une vérification directe à largeur étroite, et teste aussi le zoom réel sur ordinateur pour observer l’agrandissement de la page.

Le contenu qui a besoin d’une mise en page bidimensionnelle, comme un tableau de données, une carte ou un diagramme, peut conserver cette disposition. Garde tout défilement horizontal nécessaire dans sa propre région. Les titres, consignes et paragraphes autour doivent toujours tenir dans la largeur de la page.

Utilise du contenu réaliste : un titre long, une URL sans coupure, de nombreux liens et un texte traduit plus long. Augmente aussi la taille de police par défaut du navigateur. Une boîte qui paraissait spacieuse avec un court exemple peut déborder lorsque le texte grandit.

Repérer l’origine du débordement horizontal

Une barre de défilement horizontale ou une bande vide à droite signifie souvent qu’une boîte dépasse la zone d’affichage. Inspecte les éléments suspects et compare les bords de leurs boîtes à la limite de la page. Dessine temporairement leur contour :

* { outline: 1px solid red; }

Un contour montre les boîtes sans ajouter à leur largeur mesurée. Cherche les largeurs fixes, les blocs à 100vw, les images sans limite de largeur, les pistes de grille dont le minimum est trop large, les marges négatives, les textes longs et les blocs de code.

Adapte la correction à la cause :

CauseCorrection utile
Largeur de contenu rigideUtiliser une largeur redimensionnable avec max-width ou min()
Image trop grandeLimiter la largeur et utiliser une hauteur automatique
Longue URL sans coupureUtiliser overflow-wrap: anywhere
Bloc de code ou tableau large nécessaireAjouter localement overflow-x: auto
Piste de grille dont le minimum est excessifAutoriser un minimum de piste plus petit

Ne masque pas le débordement horizontal de toute la page pour aller plus vite. body { overflow-x: hidden; } peut faire disparaître la barre de défilement tout en laissant du contenu hors de portée du lecteur.

Pour un tableau à défilement local, teste l’interaction ainsi que la largeur. Utilise le clavier pour atteindre l’élément englobant nommé et vérifie que son défilement horizontal révèle chaque colonne. Continue ensuite avec la touche de tabulation jusqu’au contrôle suivant. Le tableau peut nécessiter un déplacement horizontal sans imposer la même zone de défilement large au paragraphe précédent ou au reste de la page.

Inspecte enfin les requêtes d’images dans le panneau Réseau. Définis à la fois une zone d’affichage de la taille d’un téléphone et un rapport de pixels élevé et réaliste, recharge dans les conditions de test voulues, puis vérifie le fichier candidat choisi et sa taille. Une image visuellement petite peut tout de même représenter un gros téléchargement si son indication sizes est incorrecte.

Points clés

  • Parcours une plage de largeurs et teste les bornes des points de rupture.
  • Vérifie la redistribution à 320 pixels CSS et le comportement réel du zoom.
  • Utilise de vrais appareils pour vérifier les comportements que l’émulation approxime.
  • Inspecte les boîtes qui débordent et corrige la cause précise.
  • Vérifie avec du contenu réaliste et examine les fichiers image réellement téléchargés.

5.2 Garder les pages utilisables avec le tactile et les réglages du lecteur

La largeur n’est qu’un aspect du comportement adaptatif. Une tablette large peut utiliser le tactile ; une fenêtre étroite sur ordinateur peut être utilisée avec une souris. Les pages doivent aussi fonctionner avec le zoom, un texte plus grand, différentes orientations et les préférences du lecteur en matière d’animations et de couleurs.

Rendre les contrôles faciles à atteindre

Les recommandations de taille des cibles des WCAG 2.2 de niveau AA demandent au moins 24 × 24 pixels CSS ou un espacement suffisant selon la règle prévue, avec des exceptions comme les liens dans les phrases. Le critère de taille de niveau AAA utilise 44 × 44 pixels CSS, avec des exceptions lui aussi. Des liens de navigation plus grands avec des marges intérieures sont souvent plus confortables qu’une rangée dense de minuscules intitulés.

Avec une taille racine de 16px, un lien comportant un texte de 16px, line-height: 1.5 et padding: 0.75rem 1rem possède une boîte de ligne de 24px plus 12px au-dessus et en dessous : il mesure 48px de haut. Fais du lien lui-même la boîte cliquable avec ses marges intérieures.

Les informations essentielles ne doivent pas dépendre du survol. Garde les actions visibles ou accessibles par toucher et par focus clavier. Ajoute des effets de survol facultatifs seulement lorsque l’entrée principale les prend en charge :

@media (hover: hover) and (pointer: fine) {
  .card:hover { outline: 2px solid currentColor; }
}

pointer: coarse décrit une entrée principale imprécise comme un doigt. any-pointer et any-hover vérifient si un périphérique d’entrée connecté possède une capacité ; ils ne prouvent pas que chaque lecteur l’utilise.

Permettre l’agrandissement du texte et la rotation

Laisse le zoom activé et vérifie l’agrandissement du texte à 200 % sans perte de contenu ni de fonctionnalité. Utilise des dimensions relatives à la police et des boîtes de texte extensibles. min-height permet à une boîte de grandir avec son contenu ; une hauteur fixe peut laisser le texte agrandi déborder dans la section suivante.

Prends en charge les orientations portrait et paysage, sauf si une orientation est essentielle à l’activité. Les téléphones en paysage peuvent offrir très peu d’espace vertical. Une requête de hauteur comme @media (max-height: 30em) peut laisser un en-tête adhérent disparaître au défilement pour qu’il ne couvre pas le contenu.

Respecter les préférences et la sortie

Utilise prefers-reduced-motion pour éviter les mouvements importants aux lecteurs qui en demandent moins. Une approche consiste à placer les animations facultatives dans @media (prefers-reduced-motion: no-preference). Tu peux aussi retirer une animation existante dans une requête reduce.

Pour un thème sombre, associe des couleurs de texte et de fond lisibles dans @media (prefers-color-scheme: dark). Vérifie le contraste dans les deux thèmes. color-scheme: light dark permet aux contrôles et barres de défilement dessinés par le navigateur de suivre un thème adapté ; cette propriété ne choisit pas toutes les couleurs de ta page à ta place.

Une règle de réduction des animations peut cibler uniquement le composant animé :

@media (prefers-reduced-motion: reduce) {
  .banner { animation: none; }
}

Garde le message lui-même disponible lorsque le mouvement est supprimé. Pour un thème sombre, change ensemble le premier plan et l’arrière-plan ; modifier un seul des deux peut rendre le texte indistinct du fond. Prévisualise aussi les contrôles de formulaire, car ceux dessinés par le navigateur peuvent différer des surfaces que tu as définies.

Utilise @media print pour masquer la navigation et les boutons et produire un texte sombre sur fond blanc. Les liens imprimés peuvent afficher leur destination avec a[href]::after { content: " (" attr(href) ")"; }. Vérifie dans l’aperçu avant impression que le contenu, les arrière-plans et les sauts de page restent lisibles.

Points clés

  • Dimensionne la cible cliquable en incluant ses marges intérieures.
  • Utilise les caractéristiques d’entrée pour vérifier le survol et la précision du pointeur.
  • Garde le contenu essentiel accessible aux utilisateurs du tactile et du clavier.
  • Prends en charge le zoom, les boîtes de texte extensibles et les deux orientations.
  • Respecte la réduction des animations et teste les deux thèmes de couleur.
  • Fournis des styles d’impression lisibles et des destinations de liens utiles.

Conception web adaptative : exemples

5 Leçons Interactives

1

Crée une page d’événement redimensionnable

13 étapes
Configure la zone d’affichage et choisis les dimensions d’une page d’événement qui doit s’adapter aux fenêtres étroites et au texte agrandi.
  1. 1
    IntroductionCrée une page d’événement redimensionnable

    Une page d’événement présente un texte minuscule sur téléphone et une boîte de contenu qui dépasse l’écran. Commence par distinguer la largeur de mise en page du navigateur, définie par la zone d’affichage, de la taille des boîtes qu’elle contient. Fais ensuite suivre à l’élément englobant l’espace disponible et choisis des unités de texte et de hauteur avec des bornes utiles, notamment grâce à clamp, pour que rien ne se déforme dans les fenêtres étroites ou avec du texte agrandi. Tu vérifieras chaque changement par rapport à une cause précise au lieu de modifier plusieurs dimensions sans rapport à la fois.

  2. 2
    ExplicationLis la zone d’affichage en pixels CSS

    Un écran à haute densité ne fournit pas de largeur supplémentaire pour la mise en page CSS. Si un téléphone compte 1 080 pixels de l’appareil en largeur avec un rapport de pixels de 3, la largeur correspondante est de 360 pixels CSS. Une requête média et une unité de largeur relative à la zone d’affichage utilisent cette largeur CSS. Les points physiques permettent de dessiner le texte et les images avec plus de détails ; ils ne transforment pas une page étroite en mise en page pour ordinateur.

  3. 3
    ExempleCorrige la large mise en page virtuelle

    La page d’événement ne contient aucune instruction pour la zone d’affichage : le navigateur mobile peut donc la mettre en page dans une large zone virtuelle et réduire le résultat. Place ceci dans l’en-tête du document :

    <meta name="viewport" content="width=device-width, initial-scale=1">
    

    Recharge l’aperçu étroit. La page utilise maintenant la largeur de l’appareil en pixels CSS et démarre à l’échelle normale. Laisse le zoom activé pour les lecteurs qui ont besoin d’un texte plus grand.

  4. 4
    DéfiExplique le défilement horizontal restant

    Après le changement de zone d’affichage, le texte paraît normal, mais l’élément englobant de l’événement utilise toujours width: 900px dans une zone d’affichage de 360px. Pourquoi la page défile-t-elle encore horizontalement ?

    ---reveal---

    La balise a changé la zone d’affichage initiale du navigateur pour la mise en page, pas la largeur CSS de l’élément englobant. Une boîte de 900px dépasse toujours 360px. Rends l’élément englobant fluide avec une borne supérieure pour qu’il puisse se réduire à l’espace dont la page dispose réellement.

  5. 5
    ExemplePermets à l’élément englobant de rétrécir

    Remplace la largeur fixe de l’élément englobant par une boîte de pleine largeur avec un maximum :

    .event {
      box-sizing: border-box;
      width: 100%;
      max-width: 68rem;
      padding-inline: 1rem;
      margin-inline: auto;
    }
    

    L’élément englobant suit un parent étroit mais cesse de grandir sur un grand écran. Border-box inclut les marges intérieures dans sa largeur déclarée, tandis que les marges automatiques en ligne centrent la boîte limitée.

  6. 6
    ExplicationChoisis une référence pour le texte et les espacements

    Laisse la police racine à la valeur par défaut du lecteur. Un intitulé de 1.25rem mesure 20px avec une taille racine de 16px et 25px avec une taille racine de 20px. Pour les marges intérieures d’un bouton, em peut être plus utile : padding: 0.5em 1em suit la taille du texte propre au bouton. Dans la propriété font-size elle-même, en revanche, em suit le parent. Cette différence explique pourquoi les règles de taille de police en em imbriquées peuvent se multiplier.

  7. 7
    ConseilLimite la largeur du paragraphe selon la police

    La description de l’événement ne doit pas s’étirer en une très longue ligne sur un grand écran. Ajoute max-width: 62ch à sa zone de lecture. Un ch mesure la largeur du chiffre « 0 » de la police : le résultat est donc une limite utile fondée sur la police, et non la garantie d’avoir exactement 62 caractères par ligne. Vérifie la police et le texte réels ; les fenêtres étroites feront toujours passer le paragraphe à la ligne avant qu’il atteigne cette limite.

  8. 8
    DéfiConserve les proportions d’un bouton

    La taille de police propre à un bouton passe de 16px à 24px. Sa marge intérieure horizontale est de 0.75em. Que devient la marge intérieure de chaque côté, et pourquoi ?

    ---reveal---

    Elle passe de 12px à 18px car em, pour les marges intérieures, suit la taille de police propre au bouton. Cela permet à l’espace autour de grandir avec l’intitulé. Une valeur de marge intérieure en rem suivrait plutôt la police racine et ne changerait pas nécessairement avec cette augmentation locale de police.

  9. 9
    ExplicationAdapte une grande section d’ouverture

    La section d’ouverture de l’événement doit remplir l’écran d’un téléphone sans enfermer un texte plus long dans une boîte de hauteur fixe. Utilise min-height: 100svh. La petite zone d’affichage représente l’état où les barres d’outils du navigateur sont visibles ; min-height permet à la section de dépasser cette taille initiale. La simple unité vh suit la grande zone d’affichage, tandis que dvh suit les changements des barres d’outils et peut redimensionner la section pendant le défilement.

  10. 10
    ExempleDéfinis une première taille de titre bornée

    Pour le titre de l’événement, essaie :

    .event h1 {
      font-size: clamp(1.5rem, 1rem + 2vw, 2.5rem);
    }
    

    Avec une taille racine de 16px, les bornes sont de 24px et 40px. Dans une zone d’affichage de 600px, la valeur préférée est de 16px plus 12px, soit 28px. Comme 28px se trouve dans les bornes, le navigateur utilise cette valeur. Cela produit un changement progressif sans requête distincte pour chaque taille.

  11. 11
    ExempleApplique les bornes aux deux extrémités

    Garde la même expression pour le titre et une taille racine de 16px. À 300px de large, la valeur préférée est de 16px plus 6px, soit 22px : le minimum de 24px s’applique donc. À 1 600px de large, elle serait de 48px : le maximum de 40px s’applique donc. L’expression du milieu suggère une taille ; clamp détermine si cette suggestion se trouve dans la plage autorisée. La fonction ne change pas l’échelle des trois arguments ensemble.

  12. 12
    DéfiChoisis les unités et vérifie l’agrandissement

    L’élément englobant de la page d’événement tient dans l’écran, mais son titre utilise uniquement 6vw et s’agrandit à peine pendant le zoom sur ordinateur. Que dois-tu modifier, puis tester ?

    ---reveal---

    Utilise une part relative à la police et des bornes raisonnables au lieu d’un dimensionnement uniquement relatif à la zone d’affichage, puis teste l’agrandissement réel du texte. Le zoom réduit la largeur de la zone d’affichage en pixels CSS, ce qui réduit une taille de police uniquement en vw. Même une expression mixte en rem et vw doit être vérifiée avec le zoom pour confirmer que les lecteurs peuvent suffisamment agrandir le texte.

  13. 13
    RécapitulatifVérifie la base redimensionnable

    Vérifie trois références avant d’ajouter des changements de mise en page : la zone d’affichage mobile utilise la largeur de l’appareil, l’élément englobant suit son parent et les tailles de texte respectent une référence de police. Borne les valeurs fluides là où c’est nécessaire et laisse les boîtes de texte grandir. Essaie une fenêtre étroite, une fenêtre large et un texte agrandi avant de passer à des colonnes supplémentaires.

2

Transforme une liste de cartes en mise en page adaptative

14 étapes
Pars d’une pile étroite, ajoute des points de rupture utiles et compare les colonnes explicites et automatiques.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionTransforme une liste de cartes en mise en page adaptative
  2. 2
    ExplicationRends une condition de largeur facile à lire
  3. 3
    ExempleCombine les conditions avec le bon sens
  4. 4
    DéfiTrouve un intervalle sans correspondance entre les bornes
  5. 5
    ExempleÉcris d’abord la mise en page étroite
  6. 6
    ExempleAjoute deux colonnes lorsqu’elles tiennent
  7. 7
    DéfiFais prévaloir le changement pour les grandes largeurs
  8. 8
    ExplicationLaisse la grille ajuster les colonnes automatiquement
  9. 9
    ExempleCompte les pistes et les espacements ensemble
  10. 10
    Point cléChoisis le comportement de l’espace vide
  11. 11
    DéfiGarde la grille utilisable lorsqu’elle est étroite
  12. 12
    ConseilPréserve l’ordre de lecture
  13. 13
    DéfiCombine le comportement de la page et celui des composants
  14. 14
    RécapitulatifVérifie chaque transition
3

Réutilise une carte dans différents emplacements de page

10 étapes
Configure un élément englobant pour une requête locale et combine les unités de conteneur avec les conditions de la page.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionRéutilise une carte dans différents emplacements de page
  2. 2
    ExempleCrée l’ancêtre qui sert à la mesure
  3. 3
    ExempleModifie la carte à l’intérieur de l’élément englobant
  4. 4
    DéfiCorrige une requête sur l’élément lui-même
  5. 5
    ConseilNomme la boîte de mesure voulue
  6. 6
    ExplicationRends fluide un titre local
  7. 7
    DéfiTrouve l’origine de cette référence inattendue
  8. 8
    LienDistingue les décisions concernant la page et les préférences
  9. 9
    DéfiChoisis les conditions d’une carte réutilisable
  10. 10
    RécapitulatifInspecte la boîte de référence
4

Fournis une image nette sans téléchargement volumineux

15 étapes
Rends une image redimensionnable, prévois le fichier candidat pour la résolution et ajoute un choix de cadrage ou de format si nécessaire.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionFournis une image nette sans téléchargement volumineux
  2. 2
    ExempleGarde la photo dans sa colonne
  3. 3
    ExplicationChoisis ce qui peut être recadré
  4. 4
    DéfiDistingue la taille affichée de la taille du fichier
  5. 5
    ExemplePropose les largeurs réelles des fichiers
  6. 6
    ExempleLis l’emplacement avant de choisir un fichier
  7. 7
    ConseilGarde sizes cohérent avec le CSS
  8. 8
    DéfiChoisis la résolution nécessaire
  9. 9
    LienUtilise des descripteurs de densité pour le logo fixe
  10. 10
    ExplicationDécide si le cadrage doit changer
  11. 11
    ExemplePlace le cadrage large avant la solution de repli
  12. 12
    DéfiCorrige l’ordre des cadrages
  13. 13
    ExplicationPropose des formats sans changer le sujet
  14. 14
    DéfiFinalise le plan des images de l’atelier
  15. 15
    RécapitulatifVérifie la boîte et la requête
5

Teste une page au-delà de son aperçu soigné

12 étapes
Recherche les causes des débordements et teste la redistribution, les capacités d’entrée, la taille du texte et les préférences du lecteur.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionTeste une page au-delà de son aperçu soigné
  2. 2
    ExempleParcours les largeurs de mise en page
  3. 3
    ExplicationVérifie une largeur de lecture avec zoom
  4. 4
    ExempleTrouve la boîte qui dépasse le bord
  5. 5
    DéfiGarde accessible une région large nécessaire
  6. 6
    ExempleDonne au lien lui-même une taille suffisante
  7. 7
    Point cléNe déduis pas le type d’entrée de la largeur
  8. 8
    DéfiCorrige un panneau pour le texte agrandi
  9. 9
    ExplicationTeste les animations, les thèmes et l’impression
  10. 10
    ConseilInspecte les téléchargements dans les conditions voulues
  11. 11
    DéfiPrévois une dernière vérification de l’utilisabilité
  12. 12
    RécapitulatifReproduis la condition qui a révélé le défaut

Conception web adaptative : QCM

40 Questions Pratiques en 4 séries

Série 1 : Diagnostiquer les pages adaptatives dans différentes conditions10 Questions Pratiques

Question 1 sur 10

Un élément englobant en content-box utilise width: 100% dans un parent de 370px et possède 20px de marge intérieure à gauche et à droite, sans bordure. Quel changement permet à l’élément de tenir dans son parent tout en gardant ces marges intérieures ?
  1. Garder le dimensionnement content-box, car sa largeur totale est déjà de 370px.
  2. Utiliser le dimensionnement border-box pour que sa largeur totale devienne 410px.
  3. Garder content-box et ajouter des marges automatiques en ligne pour supprimer le débordement.
  4. Utiliser le dimensionnement border-box pour que sa largeur totale soit de 370px.
Afficher la réponseMasquer la réponse
Réponse : D
Avec content-box, les 370px de largeur du contenu plus 40px de marges intérieures produisent une boîte de 410px. Border-box inclut ces marges intérieures dans la largeur déclarée de 370px. Les marges automatiques positionnent une boîte ; elles ne soustraient pas ses marges intérieures et ne corrigent pas sa largeur extérieure excessive.

Question 2 sur 10

Une barre latérale mesure 240px de large dans une zone d’affichage de 1 440px. Son panneau de texte utilise width: 30vw; height: 8rem. Lorsque le texte est agrandi, il chevauche le panneau suivant. Quelle correction résout les deux défauts visibles ?
  1. Garder la largeur relative à la zone d’affichage et remplacer height par min-height.
  2. Utiliser une largeur relative au parent et garder la hauteur fixe de 8rem.
  3. Utiliser une largeur relative au parent et laisser la hauteur du panneau grandir avec le contenu.
  4. Utiliser une largeur relative à la zone d’affichage plus petite et masquer tout débordement du panneau.
Afficher la réponseMasquer la réponse
Réponse : C
Trente unités de largeur de zone d’affichage donnent 432px, ce qui dépasse les 240px de la barre latérale. Une largeur relative au parent corrige cette référence, tandis qu’une hauteur fondée sur le contenu ou une hauteur minimale permet au texte agrandi d’étendre le panneau. Modifier seulement la hauteur laisse le débordement en largeur sans correction.

Question 3 sur 10

Ces règles se trouvent dans une même couche et ont la même spécificité. Quelle taille de police s’applique dans une zone d’affichage de 900px ?

@media (min-width: 700px) { .title { font-size: 2rem; } }
.title { font-size: 1.2rem; }
  1. 1,2rem
  2. 2rem
  3. 3,2rem
  4. La taille de police initiale du navigateur.
Afficher la réponseMasquer la réponse
Réponse : A
La requête correspond, mais la règle title placée après a la même spécificité et remplace sa déclaration font-size. Le placement dans une condition ne donne pas de priorité supplémentaire à la règle précédente. Déplacer la requête sous la règle de base permettrait à son changement à 2rem de l’emporter à cette largeur.

Question 4 sur 10

La valeur par défaut du navigateur et la taille racine sont de 16px. Dans une zone d’affichage de 928px, un élément englobant de page mesure 540px de large. Une requête à 52em lui donne une barre latérale de 18rem, un espacement de 1rem et une colonne principale minmax(0, 1fr). La grille principale utilise repeat(auto-fit, minmax(16rem, 1fr)), et une URL de carte mesure 620px sans coupure, avec overflow-wrap: normal. Quelles deux modifications permettent au contenu principal de tenir sans changer la barre latérale ?
  1. Déplacer le point de rupture de la barre latérale vers une largeur supérieure et garder les règles rigides de piste et d’URL.
  2. Autoriser un minimum de piste réductible et la coupure du texte de l’URL.
  3. Masquer le débordement du body et garder les règles rigides de piste et d’URL.
  4. Autoriser un minimum de piste réductible mais garder le texte de l’URL sans coupure.
Afficher la réponseMasquer la réponse
Réponse : B
La requête correspond et laisse 236px à la colonne principale après les 288px de la barre latérale et les 16px d’espacement. Le minimum de 256px de la grille ne peut pas tenir, et la longue URL a aussi besoin d’une règle de coupure. Une piste réductible ne suffit pas à faire passer à la ligne une URL sans coupure dans cette piste plus petite.

Question 5 sur 10

La taille racine est de 16px. Un élément englobant de 520px nommé panel contient un conteneur inline-size de 280px, qui contient une carte. Les deux ancêtres sont admissibles. Une requête sans nom à 26rem met en forme la carte. Que se passe-t-il et comment peut-elle utiliser volontairement la largeur extérieure ?
  1. Elle correspond déjà ; les requêtes sans nom utilisent toujours l’ancêtre le plus large.
  2. Elle reste fausse ; nommer le conteneur intérieur panel et garder sa largeur de 280px.
  3. Elle correspond déjà ; 26rem est calculé à partir de la largeur de 280px de la carte.
  4. Elle reste fausse ; nommer la requête panel pour qu’elle mesure l’ancêtre de 520px.
Afficher la réponseMasquer la réponse
Réponse : D
Le seuil de 26rem est de 416px. La requête sans nom mesure l’ancêtre admissible le plus proche, qui mesure 280px : elle est donc fausse ; une requête nommée panel peut sélectionner l’élément englobant de 520px. Les noms de conteneur sélectionnent des ancêtres, tandis que rem reste une unité relative à la police et non une fraction de la largeur de la carte.

Question 6 sur 10

Une vignette de produit réutilisable apparaît dans les deux colonnes de la page. Elle doit changer le placement de son image selon son propre emplacement, tandis qu’une grande animation doit respecter la réduction des animations. Quelle conception associe chaque décision à la bonne condition ?
  1. Utiliser une requête de largeur de zone d’affichage pour le placement et une requête de conteneur pour le mouvement.
  2. Utiliser une seule requête de largeur de zone d’affichage pour le placement et la réduction des animations.
  3. Utiliser une requête de taille de conteneur pour le placement et une requête média sur le mouvement pour l’animation.
  4. Utiliser une seule requête de largeur de conteneur pour le placement et la réduction des animations.
Afficher la réponseMasquer la réponse
Réponse : C
Le placement de l’image dépend de l’emplacement disponible pour la vignette : une requête de taille de conteneur fournit donc la mesure locale pertinente. La préférence d’animation est un réglage de l’utilisateur communiqué par une requête média. Les dimensions du conteneur ne peuvent pas révéler cette préférence et la largeur de la zone d’affichage ne peut pas distinguer les deux emplacements de la vignette.

Question 7 sur 10

Une photo remplit un élément englobant dont le bloc englobant occupe toute une zone d’affichage de 1 440px. L’élément utilise width: 100%; max-width: 48rem, sans marge intérieure, et la taille racine est de 16px. L’indication de l’image est sizes="50vw" ; le rapport est de 2 et les fichiers candidats sont 800w, 1500w et 2000w. Selon la sélection du plus petit fichier suffisant, quelle correction et quel choix de fichier correspondent à l’emplacement réel ?
  1. Garder l’indication d’un emplacement de 720px ; l’emplacement réel n’a besoin que du fichier 1500w.
  2. Utiliser une indication d’emplacement de 768px à cette largeur ; la cible demande le fichier 2000w.
  3. Utiliser une indication d’emplacement de 768px à cette largeur ; la cible demande le fichier 1500w.
  4. Utiliser une indication d’emplacement de 1 440px à cette largeur ; la cible demande le fichier 2000w.
Afficher la réponseMasquer la réponse
Réponse : B
La propriété max-width limite l’emplacement réel à 48 fois 16px = 768px, et non à 50vw = 720px. Un rapport de 2 demande 1 536 pixels source : 1500w est donc insuffisant et 2000w est le plus petit fichier proposé qui convient. L’indication d’emplacement doit suivre la limite CSS réelle, et non simplement approximer la moitié de la fenêtre.

Question 8 sur 10

Un cadrage large montre deux cyclistes, mais le cadrage pour téléphone n’en montre qu’un. L’élément img possède l’alternative textuelle « Deux cyclistes traversant un pont. » Que faut-il changer ?
  1. Faire correspondre les cadrages et l’alternative textuelle commune au sujet visible.
  2. Donner à la source pour téléphone son propre alt et garder la description de img inchangée.
  3. Déplacer l’alternative textuelle existante de img vers l’élément picture.
  4. Supprimer le img obligatoire et laisser chaque source afficher son propre alt.
Afficher la réponseMasquer la réponse
Réponse : A
La source sélectionnée utilise toujours l’unique alternative textuelle de l’élément img : chaque cadrage doit donc correspondre à cette description. Modifie le cadrage ou utilise une description commune exacte. Ajouter alt à source ne remplace pas le texte de img utilisé pour l’image affichée.

Question 9 sur 10

Une zone d’affichage de mise en page de 1 440px est soumise à un zoom de 300 %. Quelle est approximativement sa largeur résultante en pixels CSS ?
  1. 4 320 pixels CSS
  2. 1 140 pixels CSS
  3. 480 pixels CSS
  4. 720 pixels CSS
Afficher la réponseMasquer la réponse
Réponse : C
Divise la largeur de mise en page initiale par le facteur de zoom : 1 440 divisé par 3 donne 480 pixels CSS. La multiplication donne 4 320, ce qui inverse l’effet du zoom sur la largeur CSS disponible. Le contenu agrandi occupe davantage d’espace à l’écran tandis que la zone d’affichage CSS devient plus étroite.

Question 10 sur 10

Sur un écran tactile peu haut en orientation paysage, un en-tête adhérent couvre une grande partie de la page et des détails essentiels du menu apparaissent uniquement au survol. Un lecteur a aussi demandé une réduction des animations. Quel plan répond aux trois conditions ?
  1. Utiliser une seule condition de largeur étroite pour réduire l’en-tête, ajouter le survol et arrêter les animations.
  2. Utiliser des conditions de hauteur, d’entrée et de mouvement pour leurs adaptations respectives.
  3. Utiliser une requête de conteneur pour réduire l’en-tête et en déduire le survol et les préférences d’animation.
  4. Utiliser des conditions de hauteur et de survol, puis activer l’animation dès que la zone d’affichage est large.
Afficher la réponseMasquer la réponse
Réponse : B
La hauteur de la zone d’affichage peut repérer le manque de place pour l’en-tête, tandis qu’un accès adapté au tactile doit garder le menu utilisable sans survol. La réduction des animations demande sa propre requête de préférence. La largeur seule ne permet pas de déterminer si la hauteur est faible, si le survol est possible ou quelle est la préférence d’animation, même sur un appareil tenu en paysage.
Série 2 : Les bases de la zone d’affichage, du dimensionnement et de la mise en page10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un écran compte 824 pixels de l’appareil en largeur et son rapport de pixels est de 2. Quelle largeur CSS utilise-t-il pour la zone d’affichage de mise en page lorsque la balise de la zone d’affichage demande la largeur de l’appareil ?
  1. 824 pixels CSS
  2. 1 648 pixels CSS
  3. 412 pixels CSS
  4. 206 pixels CSS
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une page mobile apparaît comme une mise en page d’ordinateur miniature. Son en-tête ne contient pas de balise meta de la zone d’affichage et sa boîte principale utilise width: 880px. Quelle paire de changements corrige les deux causes ?
  1. Ajouter la balise de zone d’affichage à la largeur de l’appareil ; donner une largeur fluide à la boîte principale.
  2. Ajouter la balise de zone d’affichage à la largeur de l’appareil ; garder la boîte principale à 880px.
  3. Garder la zone d’affichage actuelle ; donner une largeur fluide à la boîte principale.
  4. Définir maximum-scale à 1 ; donner une largeur fluide à la boîte principale.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un panneau utilise width: 60% dans un bloc englobant de 450px de large. Il n’a ni marge intérieure ni bordure. Quelle est sa largeur ?
  1. 180px
  2. 450px
  3. 750px
  4. 270px
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

La taille de police racine est de 18px. Un bouton hérite d’une police de 20px de son parent, définit font-size: 1.25em et possède padding-inline: 0.8em. Quelle est sa marge intérieure horizontale de chaque côté ?
  1. 16px
  2. 20px
  3. 18px
  4. 14,4px
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une section principale doit être au moins aussi haute que la petite zone d’affichage mobile et grandir si son texte demande plus de hauteur. Quelle déclaration convient ?
  1. height: 100svh
  2. min-height: 100svh
  3. min-height: 100lvh
  4. height: 100dvh
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

La taille de police racine est de 18px et la zone d’affichage mesure 900px de large. Quelle taille de police résulte de clamp(1rem, 1rem + 1vw, 1.4rem) ?
  1. 25,2px
  2. 27px
  3. 18px
  4. 32,4px
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Pour une largeur de zone d’affichage exactement égale à 760px, (min-width: 760px) correspond-il ?
  1. Non, car la largeur doit être supérieure à 760px.
  2. Seulement si une condition max-width est aussi présente.
  3. Seulement si la feuille de style définit la taille racine en pixels.
  4. Oui, car sa borne minimale est incluse.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Un navigateur a une taille de police initiale de 20px. La feuille de style définit html { font-size: 12px; }. À partir de quelle largeur de zone d’affichage (min-width: 36em) correspond-il ?
  1. 432px
  2. 576px
  3. 720px
  4. 864px
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Une grille de base comporte une colonne. Une requête à 62em définit trois colonnes, puis une requête à 42em, placée plus loin, en définit deux. Les deux utilisent .items avec la même spécificité dans la même couche. Que s’affiche-t-il à 70em ?
  1. Trois colonnes, car le seuil le plus grand a une spécificité supérieure.
  2. Une colonne, car les requêtes de largeur minimale qui se chevauchent s’annulent.
  3. Trois colonnes, car le navigateur trie les requêtes selon leur seuil.
  4. Deux colonnes, car les deux requêtes correspondent et la dernière règle l’emporte.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Quatre cartes flexibles se répartissent sur une première ligne complète de trois et une dernière ligne d’une carte. Chacune utilise flex: 1 1 14rem. Pourquoi la dernière carte peut-elle être plus large ?
  1. La dernière carte hérite d’une taille de police racine plus grande.
  2. Le retour à la ligne flexible conserve des colonnes vides sur la dernière ligne.
  3. Chaque ligne flexible répartit sa propre largeur restante.
  4. La dernière carte ignore la largeur déclarée du conteneur.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Points de rupture, conteneurs et contrôles utilisables10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Une zone d’affichage peut mesurer 679,5px de large pendant le zoom. Quel choix de bornes attribue chaque largeur à exactement une des deux mises en page fondées sur la largeur ?
  1. Utiliser (max-width: 679px) et (min-width: 680px).
  2. Utiliser (width < 680px) et (width >= 680px).
  3. Utiliser (max-width: 680px) et (min-width: 680px).
  4. Utiliser (width <= 680px) et (width > 681px).
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Une ligne de navigation passe maladroitement à la ligne à certaines largeurs. Qu’est-ce qui doit déterminer où sa mise en page change ?
  1. La largeur de téléphone la plus courante dans une liste de préréglages.
  2. La largeur à laquelle toutes les images de la page ont fini de se télécharger.
  3. Le nombre de pixels physiques indiqué dans les caractéristiques de l’écran.
  4. La largeur à laquelle les liens réels ont besoin d’une autre disposition.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Une grille utilise repeat(auto-fit, minmax(14rem, 1fr)) avec un espacement de 1rem. La taille racine est de 16px, il y a de nombreux éléments et la largeur du contenu est de 920px. Combien de colonnes tiennent ?
  1. Deux colonnes
  2. Trois colonnes
  3. Quatre colonnes
  4. Cinq colonnes
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Une grille de cartes peut être placée dans une barre latérale de 190px ou dans une région principale de 1 000px. Elle utilise repeat(auto-fit, minmax(16rem, 1fr)). Avec une taille racine de 16px, la grille déborde de la barre latérale et deux cartes de la région principale doivent s’étirer sur leur ligne. Quelle règle de piste répond aux deux besoins ?
  1. repeat(auto-fit, minmax(min(16rem, 100%), 1fr))
  2. repeat(auto-fill, minmax(16rem, 1fr))
  3. repeat(auto-fit, minmax(16rem, 16rem))
  4. repeat(auto-fill, minmax(min(16rem, 100%), 1fr))
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Quelle déclaration sur l’élément englobant permet les requêtes de conteneur sur la largeur tout en laissant la hauteur suivre le contenu en écriture horizontale ?
  1. container-type: normal
  2. container-type: size
  3. container-type: inline-size
  4. container-name: inline-size
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Une carte possède container-type: inline-size. Dans @container (width >= 24rem), .card passe à deux colonnes, mais elle ne change jamais. Aucun conteneur ancêtre n’est admissible et la carte se trouve dans un emplacement flexible qui rétrécit. Quelle correction rend la requête fiable ?
  1. Garder le type sur la carte et ajouter un nom de conteneur à la requête.
  2. Placer le type sur la carte et remplacer la requête par max-width.
  3. Placer le type sur un élément englobant extensible et interroger la carte intérieure.
  4. Placer le type sur un élément englobant en ligne dont la largeur vient uniquement de son contenu.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Un titre utilise 5cqi dans un conteneur admissible de 460px de large en écriture horizontale. La zone d’affichage mesure 1 380px de large. Quelle est sa taille de police calculée avant toute autre limite ?
  1. 23px
  2. 69px
  3. 46px
  4. 13,8px
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Une image de 1 500 × 1 000 possède les attributs de dimensions HTML correspondants et le CSS max-width: 100%; height: auto. Son conteneur mesure 450px de large. Quelles dimensions affichées préservent ses proportions ?
  1. 450 × 1 000 pixels CSS
  2. 450 × 300 pixels CSS
  3. 1 500 × 1 000 pixels CSS
  4. 450 × 450 pixels CSS
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

À 320px, une page contient un paragraphe lisible avec une longue URL et un tableau de résultats réellement bidimensionnel. L’URL et le tableau élargissent tous deux la page entière. Quelle correction préserve l’accès aux deux ?
  1. Masquer le débordement horizontal de la page et garder les deux boîtes à leur largeur actuelle.
  2. Donner au paragraphe et au tableau une largeur fixe de 320px et masquer leur débordement.
  3. Placer toute la page dans une région à défilement horizontal et garder sa mise en page large.
  4. Autoriser la coupure de l’URL et placer le tableau dans un élément englobant défilant, nommé et accessible au clavier.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Une grande tablette utilisée principalement au tactile indique hover: none et pointer: coarse. Comment les détails essentiels d’une carte doivent-ils être fournis ?
  1. Les montrer uniquement au survol, car la zone d’affichage de la tablette est large.
  2. Les montrer uniquement lorsque la tablette passe en orientation paysage.
  3. Les garder visibles ou accessibles par toucher et par focus clavier.
  4. Les garder masqués jusqu’à ce qu’une requête any-pointer: fine corresponde.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Fichiers image, cadrages et boîtes d’affichage10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un diagramme doit tenir dans une miniature rectangulaire fixe sans perdre aucune partie de son contenu. Quelle valeur de object-fit convient ?
  1. contain
  2. cover
  3. fill
  4. none
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Les images d’une page paraissent petites sur les téléphones, mais téléchargent toujours des fichiers très volumineux. Elles possèdent déjà max-width: 100%; height: auto. Quel changement supplémentaire réduit la taille du téléchargement ?
  1. Réduire le max-width CSS de 100 % à 80 %.
  2. Supprimer les attributs HTML width et height.
  3. Proposer des fichiers plus petits avec le balisage des images adaptatives.
  4. Définir object-fit à contain sur chaque image.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Une image est affichée à 340 pixels CSS sur un écran de rapport 2. Les fichiers candidats sont 400w, 700w et 1400w. Suppose que le navigateur sélectionne le plus petit fichier qui atteint la cible de densité, sans ajustement lié au cache ou au réseau. Quelle largeur de fichier est sélectionnée ?
  1. 400 pixels
  2. 680 pixels
  3. 1 400 pixels
  4. 700 pixels
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

La valeur par défaut du navigateur est de 16px. Une image possède sizes="(min-width: 54em) 40vw, 100vw" et des fichiers candidats de 600w, 1000w et 1800w. Pour une zone d’affichage de 1 000px et un rapport de 2, suppose que le plus petit fichier qui atteint la cible de densité est choisi. Quelle largeur de fichier en résulte ?
  1. 600 pixels
  2. 1 000 pixels
  3. 1 800 pixels
  4. 800 pixels
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Le CSS donne à une photo un emplacement de 48vw, mais son balisage à descripteurs de largeur indique sizes="100vw". Quel problème de chargement est probable ?
  1. Le navigateur doit afficher la photo à 100vw malgré le CSS.
  2. Le navigateur doit rejeter tous les fichiers candidats à descripteur de largeur.
  3. Le navigateur peut choisir un fichier candidat inutilement grand.
  4. Le navigateur peut recadrer la photo sur la moitié de sa composition.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

La valeur par défaut est de 16px. Une image utilise sizes="(min-width: 38em) 100vw, (min-width: 66em) 45vw, 100vw". À 1 152px et avec un rapport de 2, les fichiers candidats sont 640w, 1280w et 2560w. Selon la règle de sélection du plus petit fichier suffisant, que se passe-t-il ?
  1. La première condition l’emporte et sélectionne le fichier candidat 2560w.
  2. Le plus grand seuil correspondant l’emporte et sélectionne le fichier candidat 1280w.
  3. La première condition l’emporte et sélectionne le fichier candidat 1280w.
  4. La solution de repli finale l’emporte et sélectionne le fichier candidat 2560w.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Dans un élément picture, où faut-il écrire l’alternative textuelle ?
  1. Sur chaque élément source.
  2. Sur l’élément picture lui-même.
  3. Sur la première source correspondante seulement.
  4. Sur l’élément img obligatoire.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

La valeur par défaut du navigateur est de 16px. Un élément picture propose d’abord une source de largeur minimale 34em avec des fichiers candidats 600w/1200w et sizes="50vw", puis une source à 68em avec des fichiers 1600w/2400w et sizes="100vw", puis img. Les deux formats sont pris en charge. À 1 152px et avec un rapport de 2, quels source et fichier résultent de la sélection du plus petit fichier suffisant ?
  1. La deuxième source et son fichier 2400w.
  2. La première source et son fichier 1200w.
  3. La première source et son fichier 600w.
  4. La deuxième source et son fichier 1600w.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un élément picture propose AVIF, puis WebP, puis un img JPEG. Il n’y a aucune condition média. Un navigateur prend en charge WebP et JPEG, mais pas AVIF. Que sélectionne-t-il ?
  1. Le src du img JPEG.
  2. La source WebP.
  3. La source AVIF.
  4. WebP et JPEG à la fois.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Après avoir élargi une fenêtre de test, une grande image adaptative est mise en cache. Lorsqu’on rétrécit la fenêtre, ce fichier est toujours utilisé. Quelle conclusion est justifiée ?
  1. Le navigateur a forcément ignoré toutes les conditions sizes.
  2. Une image à descripteurs de largeur ne peut pas s’adapter au redimensionnement.
  3. La largeur CSS de l’image doit toujours être celle de la zone d’affichage plus large.
  4. Un fichier candidat plus grand en cache peut être réutilisé ; il faut retester en contrôlant le cache.
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

74 Mots-Clés, chacun avec sa définition

A

agrandissement du texte
L’agrandissement du texte augmente la taille du texte lisible tout en préservant le contenu et les contrôles ; les WCAG exigent sa prise en charge jusqu’à 200 % sans perte.
Un panneau dont la hauteur peut grandir garde toute son explication visible lorsqu’un lecteur double la taille du texte.
ajustement de l’image
L’ajustement de l’image contrôle la façon dont le contenu d’une image s’insère dans une boîte d’image dimensionnée ; il permet un recadrage proportionnel, des bandes vides ou un étirement.
object-fit: contain préserve toutes les parties d’un diagramme dans une boîte de miniature uniforme.
alternative textuelle
Une alternative textuelle est l’équivalent textuel placé sur un élément img qui transmet la fonction ou le contenu de l’image lorsque celle-ci ne peut pas être perçue.
Une seule description alt doit rester exacte pour chaque cadrage que l’élément picture englobant peut sélectionner.
auto-fill
Le mot-clé de répétition de grille auto-fill conserve les pistes qui tiennent dans l’espace disponible, même lorsque certaines sont vides, et préserve ainsi des emplacements de colonne inutilisés dans la ligne.
Deux cartes peuvent rester plus étroites parce que auto-fill réserve de la place pour des pistes vides supplémentaires.
auto-fit
Le mot-clé de répétition de grille auto-fit crée autant de pistes que possible et réduit les pistes inutilisées à zéro pour que les pistes occupées puissent se partager leur espace.
Deux cartes peuvent s’étirer sur une ligne large lorsque auto-fit réduit les pistes vides de la ligne à zéro.

B

balise meta de la zone d’affichage
La balise meta de la zone d’affichage donne aux navigateurs mobiles des instructions de largeur de mise en page et d’échelle initiale afin qu’ils puissent afficher une page à une taille utilisable.
La balise se place dans le <head> du document et demande width=device-width, initial-scale=1.

C

capacité de survol
La capacité de survol indique si l’entrée de pointage principale peut rester facilement au-dessus d’un élément sans l’activer.
Les détails essentiels restent visibles sur les appareils tactiles, tandis qu’un style de survol facultatif s’applique dans une requête sur cette capacité.
caractéristique média orientation
La caractéristique orientation compare la largeur et la hauteur de la zone d’affichage ; portrait inclut une zone carrée et landscape signifie que la largeur est supérieure.
Une requête landscape peut correspondre aussi bien à une grande fenêtre d’ordinateur qu’à un téléphone tenu à l’horizontale.
cascade
La cascade est le processus qui départage les déclarations CSS en concurrence ; les règles conditionnelles y participent toujours lorsque leurs conditions correspondent.
Lorsque des règles correspondantes de même spécificité se trouvent dans la même couche, la dernière déclaration font-size l’emporte.
ch
Un ch est une longueur égale à la largeur d’avance du chiffre « 0 » dans la police actuelle, souvent utilisée pour limiter la longueur des lignes d’un paragraphe.
Un article limité à 65ch reste lisible dans une grande fenêtre sans que cela garantisse un nombre exact de caractères.
changement de résolution
Le changement de résolution propose des versions d’une même image en différentes dimensions en pixels afin que le navigateur puisse choisir un niveau de détail adapté à l’affichage.
Un écran de rapport 2 peut recevoir un fichier plus grand sans changer le cadrage de la photo ni sa boîte CSS.
chargement différé
Le chargement différé retarde le téléchargement d’une image jusqu’à ce qu’elle s’approche de la zone visible, ce qui réduit les téléchargements initiaux pour le contenu situé plus bas dans la page.
Une image de galerie située sous la première partie visible de la page peut utiliser loading="lazy", tandis que la photo principale d’ouverture se charge rapidement.
cible tactile
Une cible tactile est la zone cliquable ou activable par toucher d’un contrôle, y compris ses marges intérieures actives, qui doit avoir une taille ou un espacement suffisant pour être utilisée.
Ajouter des marges intérieures au lien lui-même crée une cible plus grande que l’ajout d’espace non cliquable autour de son texte.
clamp()
La fonction clamp() borne une dimension préférée entre un minimum et un maximum, ce qui permet à la dimension de changer progressivement à l’intérieur de ces bornes.
Un titre combine rem et vw dans clamp() pour pouvoir grandir avec la fenêtre dans des limites utiles.
conception web adaptative
La conception web adaptative adapte la mise en page, le texte et les images d’une même page à l’espace disponible dans différentes fenêtres et sur différents appareils.
Une page de cours empile ses cartes sur un téléphone étroit et les place en colonnes lorsque la fenêtre offre assez de place.
condition min-width
Une condition min-width correspond lorsque la zone d’affichage est au moins aussi large que le seuil indiqué, valeur du seuil comprise.
La condition (min-width: 620px) est vraie à 620px et le reste pour les largeurs de zone d’affichage supérieures.
confinement de taille
Le confinement de taille empêche le contenu de déterminer la taille d’un conteneur dans les dimensions confinées, ce qui évite les dépendances circulaires de dimensionnement.
Une boîte avec container-type: size a besoin d’une hauteur définie indépendamment, car son texte ne la détermine plus.
contain
La valeur contain de object-fit garde toute l’image visible dans une boîte dimensionnée tout en préservant ses proportions et en laissant de l’espace vide si nécessaire.
Un diagramme utilise contain pour que toutes ses annotations restent visibles même lorsque sa forme diffère de celle de la miniature.
conteneur de requête
Un conteneur de requête est un ancêtre déclaré admissible pour les caractéristiques de taille qu’une règle de conteneur doit mesurer pour ses descendants.
Un élément englobant avec container-type: inline-size peut fournir des informations de largeur à une carte qu’il contient.
cover
La valeur cover de object-fit remplit une boîte d’image dimensionnée tout en préservant les proportions de la source, en coupant les parties qui dépassent de la boîte.
Une photo de cours remplit une miniature au format 4:3 avec cover : une partie du contenu près de ses bords peut donc disparaître.
cqb
Un cqb représente un pour cent de la taille de bloc d’un conteneur ancêtre admissible, soit sa hauteur en écriture horizontale.
Une unité de taille de bloc demande un conteneur admissible dans cette direction, et pas seulement un conteneur inline-size.
cqi
Un cqi représente un pour cent de la taille en ligne du conteneur ancêtre admissible le plus proche, soit sa largeur en écriture horizontale.
Dans un conteneur admissible de 500px de large, 4cqi donne une taille de police préférée de 20px.
cqmin et cqmax
Les unités cqmin et cqmax utilisent respectivement un pour cent de la plus petite et de la plus grande dimension du conteneur admissible pour un dimensionnement proportionnel.
Une longueur cqmin suit la plus petite dimension de référence lorsque les deux dimensions diffèrent.
CSS conçu d’abord pour les mobiles
Le CSS conçu d’abord pour les mobiles utilise des règles de base ordinaires pour les mises en page étroites et ajoute des dispositions plus larges par des conditions de largeur minimale lorsque l’espace augmente.
Une liste de cartes commence avec une colonne et gagne des colonnes supplémentaires grâce à des requêtes min-width croissantes.
CSS conçu d’abord pour les ordinateurs
Le CSS conçu d’abord pour les ordinateurs commence par des styles de base pour grand écran et utilise des requêtes de largeur maximale pour les modifier ou les annuler lorsque la zone d’affichage rétrécit.
Une ligne conçue d’abord pour les ordinateurs passe à un empilement vertical dans une requête max-width pour les petites fenêtres.

D

débordement horizontal
Un débordement horizontal se produit lorsque du contenu dépasse la largeur disponible dans sa boîte, ce qui peut créer un défilement horizontal ou masquer du contenu.
Un panneau fixe de 700px déborde d’une page de 360px même lorsque la balise meta de la zone d’affichage est présente.
décalage de mise en page
Un décalage de mise en page est un mouvement visible du contenu d’une page lorsque sa position initiale change, par exemple au chargement d’une image sans espace réservé.
Les attributs de largeur et de hauteur d’une image permettent au navigateur de réserver l’espace selon ses proportions et de réduire les sauts du texte pendant le chargement.
descripteur de densité
Un descripteur de densité indique l’échelle de densité en pixels d’un fichier candidat avec le suffixe x, généralement pour une image dont la taille d’affichage CSS est fixe.
Un logo affiché à 180px de large peut proposer un fichier candidat de 360 pixels avec un descripteur de densité 2x.
descripteur de largeur
Un descripteur de largeur indique la largeur réelle en pixels source d’un fichier image candidat avec le suffixe w ; il ne définit pas la largeur affichée en CSS.
Le descripteur 900w n’est correct que si le fichier candidat fourni mesure réellement 900 pixels de large.
dimensionnement border-box
Le dimensionnement border-box inclut les marges intérieures et les bordures dans la largeur et la hauteur déclarées d’un élément, ce qui laisse moins de place à son contenu.
Un élément englobant de page de pleine largeur utilise box-sizing: border-box pour que ses marges intérieures latérales ne provoquent pas de débordement.
dimensions intrinsèques de l’image
Les dimensions intrinsèques d’une image sont les informations de taille fournies par la ressource image, utilisées lorsque le CSS et le HTML ne précisent pas d’autre taille d’affichage.
Une grande image peut déborder d’un article étroit si le CSS ne limite pas sa largeur à l’espace disponible.
direction artistique
La direction artistique sélectionne une composition ou un cadrage différent selon une condition d’affichage afin que le sujet important reste bien visible à la taille choisie.
Un téléphone reçoit un cadrage rapproché d’un artiste, tandis qu’une fenêtre large montre l’artiste et la scène.
dvh
Un dvh représente un pour cent de la hauteur de la zone d’affichage dynamique, qui suit les changements de la zone visible actuelle lorsque les barres d’outils du navigateur se déplacent.
Un panneau utilisant 100dvh peut changer de taille lorsqu’une barre d’outils de téléphone apparaît ou disparaît pendant le défilement.

E

em
Un em est une longueur relative à la police, fondée sur la police du parent pour font-size et sur la police propre à l’élément pour les autres propriétés.
Un bouton avec 1em de marge intérieure horizontale gagne de l’espace autour de son intitulé lorsque sa propre police grandit.

É

élément source
Un élément source dans picture propose des fichiers image candidats et des conditions facultatives de média ou de format qui déterminent s’il peut être sélectionné.
Un élément source utilisant (min-width: 55em) peut fournir le cadrage large avant le img de repli pour écran étroit.
émulation d’appareils
L’émulation d’appareils est un outil du navigateur qui reproduit approximativement des conditions d’appareil comme la taille de la zone d’affichage, la densité de l’écran et l’entrée tactile pour les tests.
Faire varier la zone d’affichage émulée révèle les largeurs auxquelles un titre de carte dépasse son conteneur.

F

feuille de style d’impression
Une feuille de style d’impression applique du CSS à la sortie imprimée pour garder le contenu utile lisible tout en adaptant la navigation, les couleurs et la présentation des liens.
Une règle d’impression masque les boutons de menu et peut ajouter la destination de chaque lien après son intitulé.

L

largeur en pourcentage
Une largeur en pourcentage donne à un élément une part de la largeur de son bloc englobant, ce qui lui permet de suivre les changements de l’espace disponible.
Une boîte définie à 50% mesure 240px de large lorsque son bloc englobant fournit 480px de largeur.
lvh
Un lvh représente un pour cent de la hauteur de la grande zone d’affichage, qui correspond à l’espace de mise en page disponible lorsque les barres d’outils rétractables du navigateur sont masquées.
Une section définie à 100lvh peut passer derrière les barres d’outils mobiles lorsqu’elles sont encore visibles.

M

max()
La fonction max() sélectionne la plus grande des valeurs fournies ; elle peut ainsi fixer une borne inférieure à une longueur tandis qu’une autre valeur change.
Un espacement défini à max(1rem, 2vw) ne peut pas devenir inférieur à 1rem lorsque la zone d’affichage rétrécit.
min()
La fonction min() sélectionne la plus petite des valeurs fournies ; elle peut ainsi fixer une borne supérieure à une dimension qui grandirait autrement avec l’espace disponible.
Une boîte avec width: min(100%, 36rem) remplit les conteneurs étroits mais cesse de grandir à 36rem.
minmax()
La fonction de grille minmax() donne à une piste une taille minimale et maximale, ce qui lui permet de grandir ou de rétrécir dans la plage déclarée.
Une piste utilisant minmax(15rem, 1fr) ne peut pas rétrécir sous 15rem, même si son conteneur est plus étroit.
mise en page intrinsèque
Une mise en page intrinsèque s’adapte grâce à ses propres règles de dimensionnement et de retour à la ligne, ce qui permet au contenu de tenir dans l’espace disponible sans points de rupture explicites.
Une rangée de cartes avec retour à la ligne gagne une ligne lorsque le conteneur rétrécit, sans aucune requête média.

N

nom du conteneur
Un nom de conteneur identifie un conteneur ancêtre afin qu’une requête puisse le cibler au lieu d’utiliser la référence admissible sans nom la plus proche.
@container sidebar (width >= 30rem) cherche un ancêtre admissible nommé sidebar.

O

object-position
La propriété object-position définit l’alignement du contenu d’une image dans sa boîte et contrôle la zone qui reste visible lorsque l’ajustement la recadre.
Une miniature utilise object-position: top pour garder visible la partie supérieure de sa source lors du recadrage.
opérateur logique
Un opérateur logique combine ou inverse des conditions afin qu’une requête puisse exiger plusieurs faits ou accepter des conditions correspondantes alternatives.
screen and (min-width: 40em) exige à la fois une sortie sur écran et une zone d’affichage suffisamment large.
ordre dans le code source
L’ordre dans le code source est la séquence des éléments en HTML, qui détermine l’ordre de lecture et du focus clavier même lorsque le CSS modifie leur placement visuel.
Un lien déplacé visuellement en haut peut toujours être atteint en dernier avec la touche de tabulation s’il reste le dernier dans le HTML.

P

panneau Réseau
Le panneau Réseau est un outil de développement qui répertorie les requêtes de ressources et les détails de leur transfert, ce qui aide à vérifier les fichiers image téléchargés par une page.
Un test à la taille d’un téléphone peut révéler le téléchargement d’une grande image causé par une indication sizes qui surestime l’emplacement.
picture
L’élément picture regroupe des choix de sources ordonnés avec un élément img obligatoire ; il permet la direction artistique et les formats alternatifs avec une solution de repli.
Un élément picture peut proposer des sources AVIF et WebP avant le fichier JPEG fourni par son img final.
pixel CSS
Un pixel CSS est une longueur de référence utilisée pour la mise en page ; sur un écran à haute densité, il peut correspondre à plusieurs pixels physiques de l’appareil.
Un téléphone de rapport 3 avec une zone d’affichage CSS de 390px compte 1 170 pixels de l’appareil sur la largeur de son écran.
point de rupture
Un point de rupture est un seuil auquel une règle conditionnelle modifie une mise en page ou un style parce que le contenu a besoin d’une autre disposition.
Une ligne de navigation reçoit un point de rupture là où ses intitulés complets ne tiennent plus confortablement sur une ligne.
point de rupture fondé sur le contenu
Un point de rupture fondé sur le contenu est choisi selon le comportement du texte et des contrôles réels, plutôt que selon une largeur prédéfinie associée à un appareil.
Tester un long titre de page révèle que la barre latérale doit passer en dessous plus tôt que prévu.
précision du pointeur
La précision du pointeur décrit avec quelle exactitude l’entrée de pointage principale peut cibler une zone ; elle est indiquée dans les requêtes média comme fine, grossière ou absente.
Une tablette utilisée principalement au tactile peut indiquer pointer: coarse même lorsque sa zone d’affichage est large.
préférence de réduction des animations
Une préférence de réduction des animations est un réglage du système indiquant que le lecteur souhaite moins d’animations, communiqué par une caractéristique média CSS.
Un mouvement facultatif important peut être exécuté uniquement dans prefers-reduced-motion: no-preference.
préférence de thème clair ou sombre
Une préférence de thème clair ou sombre indique l’apparence préférée du lecteur, qu’une page peut utiliser pour sélectionner des couleurs de thème lisibles.
Une requête pour thème sombre associe un fond sombre à un texte clair lisible et vérifie le contraste obtenu.

R

rapport de pixels de l’appareil
Le rapport de pixels de l’appareil est le nombre de pixels de l’appareil par pixel CSS ; il relie la densité de l’écran à l’unité de référence de mise en page de la page.
Une photo affichée à 250 pixels CSS de large peut utiliser environ 500 pixels source sur un écran de rapport 2.
rapport largeur-hauteur
Un rapport largeur-hauteur exprime la relation entre la largeur et la hauteur, ce qui permet à une boîte de média de garder les mêmes proportions lorsque ses dimensions changent.
Une photo au format 3:2 affichée à 300px de large a besoin de 200px de hauteur pour conserver sa forme d’origine.
redistribution
La redistribution est la réorganisation du contenu pour tenir dans l’espace disponible ; les WCAG de niveau AA vérifient le contenu vertical ordinaire à une largeur de 320 pixels CSS.
Un paragraphe doit passer sur des lignes plus étroites avec un zoom de 400 % sans exiger de défilement horizontal de la page.
rem
Un rem est une longueur égale à la taille de police de l’élément racine, ce qui permet aux dimensions de partager une référence sans se multiplier par imbrication.
Avec une police racine de 20px, un titre défini à 1.5rem mesure 30px avant tout agrandissement par zoom.
repli sur la petite zone d’affichage
Le repli sur la petite zone d’affichage fournit les mesures des unités de conteneur lorsqu’aucun ancêtre n’est admissible pour la dimension dont l’unité a besoin.
Un container-type manquant peut lier le dimensionnement en cqi à la fenêtre plutôt qu’à l’élément englobant de la carte.
requête de taille de conteneur
Une requête de taille de conteneur applique des styles aux descendants lorsqu’un conteneur ancêtre approprié remplit une condition portant sur ses dimensions.
Deux cartes sur une même page peuvent utiliser des dispositions différentes parce que leurs éléments englobants ont des largeurs différentes.
requête média
Une requête média est une condition qui contrôle le moment où le CSS s’applique, selon les caractéristiques de la zone d’affichage, le type de sortie, les capacités d’entrée ou les préférences.
Une requête min-width ajoute une deuxième colonne de contenu lorsque l’espace disponible dans la fenêtre est suffisant.
retour à la ligne des éléments flexibles
Le retour à la ligne des éléments flexibles permet à un conteneur flexible de placer des éléments sur des lignes supplémentaires lorsque leurs dimensions et les espacements ne tiennent plus sur la ligne actuelle.
Des liens de navigation avec flex-wrap: wrap peuvent former une deuxième ligne au lieu de dépasser la page.

S

sizes
L’attribut sizes décrit la largeur d’emplacement prévue pour l’affichage d’une image selon des conditions média ordonnées lorsque srcset utilise des descripteurs de largeur.
sizes="(min-width: 60em) 50vw, 100vw" décrit un emplacement occupant la moitié de la fenêtre pour les zones d’affichage plus larges.
srcset
L’attribut srcset fournit des fichiers image candidats avec des descripteurs de largeur ou de densité, offrant au navigateur des alternatives à un fichier source unique.
Une photo propose des fichiers candidats 480w, 800w et 1600w qui montrent tous la même composition.
svh
Un svh représente un pour cent de la hauteur de la petite zone d’affichage, qui correspond à l’espace de mise en page mobile lorsque les barres d’outils du navigateur sont visibles.
Une section d’ouverture utilise min-height: 100svh pour obtenir une hauteur initiale stable tout en permettant au contenu de grandir.
syntaxe d’intervalle
La syntaxe d’intervalle exprime les conditions média ou de taille de conteneur avec des opérateurs de comparaison, ce qui rend explicites les bornes incluses et exclues.
La condition (600px <= width < 900px) inclut 600px mais exclut 900px.

T

taille en ligne
La taille en ligne est la dimension d’un élément dans la direction où le texte se déroule sur une ligne ; elle correspond à la largeur en écriture horizontale.
La requête inline-size d’une carte horizontale réagit à la largeur, tandis que sa hauteur peut toujours suivre son texte.
type de média
Un type de média indique la catégorie générale de sortie, comme l’écran ou l’impression, à laquelle s’applique une feuille de style ou une règle CSS conditionnelle.
Un bloc @media print retire les contrôles de navigation qu’un lecteur ne peut pas utiliser sur papier.

U

unité de requête de conteneur
Une unité de requête de conteneur est une longueur fondée sur un pour cent de la taille d’un conteneur ancêtre admissible dans une dimension donnée.
Un titre avec 5cqi grandit lorsque l’élément englobant de sa carte s’élargit, même si la zone d’affichage reste inchangée.
unité relative
Une unité relative tire sa taille calculée d’une autre mesure, comme une dimension de conteneur, une taille de police ou la zone d’affichage.
Utiliser rem pour le texte fait suivre sa taille à la police racine plutôt qu’à une valeur fixe en pixels.
unité relative à la zone d’affichage
Une unité relative à la zone d’affichage est une longueur fondée sur un pourcentage d’une dimension de cette zone, indépendamment du bloc englobant de l’élément.
Un enfant de barre latérale défini à 50vw utilise toujours la moitié de la largeur de la fenêtre, même si cela dépasse la barre latérale.

V

vw
Un vw représente un pour cent de la largeur de la zone d’affichage ; une longueur suit ainsi la largeur de la fenêtre lorsque celle-ci change en pixels CSS.
Pour une zone d’affichage de 900px de large, 10vw produit une longueur calculée de 90px.

Z

zone d’affichage
La zone d’affichage est la partie du navigateur dans laquelle la page est affichée, sans les barres d’outils et les contrôles qui l’entourent.
Tourner un téléphone change les dimensions de la zone d’affichage et peut déclencher d’autres règles de mise en page.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer