- Apprendre
- Informatique et numérique
- Programmation
- HTML et CSS : création et publication de sites web
- Conception web adaptative
Conception web adaptative
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
- 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’affichageDé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 relativesUtilise 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 fluideDimensionne 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().
- Explique la conception web adaptative et configure la zone d’affichage
- É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édiaUtilise 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 CSSModifie 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.
- Écris des requêtes média
- 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 conteneurDé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.
- Configure des conteneurs et écris des requêtes de conteneur
- 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 redimensionnablesEmpê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 sizesPropose 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 pictureUtilise 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.
- Rends les images et les médias intégrés redimensionnables
- 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ébordementsUtilise 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 utilisateursDimensionne 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.
- Teste différentes largeurs et corrige les débordements
Conception web adaptative : cours
1Pré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érence | Application utile |
|---|---|---|
% | Une largeur en pourcentage suit la largeur du bloc englobant | Boîtes et colonnes fluides |
em | Taille de police du parent pour font-size ; taille propre à l’élément pour les autres propriétés | Marges intérieures des boutons et icônes |
rem | Taille de police de l’élément racine | Texte et espacements communs |
ch | Largeur du glyphe « 0 » de la police | Limite de longueur de ligne pour la lisibilité |
px | Pixels CSS de référence | Bordure 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 suivie | Principal compromis |
|---|---|---|
svh | Petite zone d’affichage, barres d’outils visibles | Taille stable qui tient dans cet état |
lvh | Grande zone d’affichage, barres d’outils masquées | Peut passer derrière les barres visibles |
dvh | Zone d’affichage dynamique actuelle | Peut 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 :
- À 375px, la taille préférée est de 15,5px : le minimum de 16px s’applique donc.
- À 1 000px, la taille préférée est de 28px, dans les limites.
- À 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.
2Adapte 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 :
| Forme | Signification |
|---|---|
screen and (min-width: 40em) | Le type de sortie et la largeur doivent tous deux correspondre |
(max-width: 30em), print | Une sortie étroite ou l’impression correspond |
not print | La 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.
3Fais 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.
| Besoin | Outil utile | Raison |
|---|---|---|
| Faire tenir des cartes répétées sur une ligne | Grille intrinsèque ou Flexbox avec retour à la ligne | Les éléments peuvent se redistribuer sans règle de seuil |
| Changer une disposition avec barre latérale pour toute la page | Requête média | L’espace disponible dans la fenêtre contrôle la page |
| Modifier une carte selon son emplacement dans la page | Requête de conteneur | La carte a besoin de la taille de son élément englobant |
| Respecter la réduction des animations ou l’impression | Requête média | Ce 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.
4Fournis 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.
| Objectif | Réglage |
|---|---|
| Montrer un diagramme entier | object-fit: contain |
| Remplir une boîte de miniature en acceptant un recadrage | object-fit: cover |
| Préserver les proportions naturelles en réduisant l’image | height: 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 :
- 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.
- 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.
- 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.
5Teste 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 :
| Cause | Correction utile |
|---|---|
| Largeur de contenu rigide | Utiliser une largeur redimensionnable avec max-width ou min() |
| Image trop grande | Limiter la largeur et utiliser une hauteur automatique |
| Longue URL sans coupure | Utiliser overflow-wrap: anywhere |
| Bloc de code ou tableau large nécessaire | Ajouter localement overflow-x: auto |
| Piste de grille dont le minimum est excessif | Autoriser 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
1Crée une page d’événement redimensionnable
13 étapes
- 1IntroductionCré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.
- 2ExplicationLis 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.
- 3ExempleCorrige 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.
- 4Dé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: 900pxdans 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.
- 5ExemplePermets à 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.
- 6ExplicationChoisis 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.25remmesure 20px avec une taille racine de 16px et 25px avec une taille racine de 20px. Pour les marges intérieures d’un bouton,empeut être plus utile :padding: 0.5em 1emsuit 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. - 7ConseilLimite 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. - 8Dé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.
- 9ExplicationAdapte 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. - 10ExempleDé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.
- 11ExempleApplique 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.
- 12Dé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
6vwet 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.
- 13Ré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.
2Transforme une liste de cartes en mise en page adaptative
14 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionTransforme une liste de cartes en mise en page adaptative
- 2ExplicationRends une condition de largeur facile à lire
- 3ExempleCombine les conditions avec le bon sens
- 4DéfiTrouve un intervalle sans correspondance entre les bornes
- 5ExempleÉcris d’abord la mise en page étroite
- 6ExempleAjoute deux colonnes lorsqu’elles tiennent
- 7DéfiFais prévaloir le changement pour les grandes largeurs
- 8ExplicationLaisse la grille ajuster les colonnes automatiquement
- 9ExempleCompte les pistes et les espacements ensemble
- 10Point cléChoisis le comportement de l’espace vide
- 11DéfiGarde la grille utilisable lorsqu’elle est étroite
- 12ConseilPréserve l’ordre de lecture
- 13DéfiCombine le comportement de la page et celui des composants
- 14RécapitulatifVérifie chaque transition
3Réutilise une carte dans différents emplacements de page
10 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionRéutilise une carte dans différents emplacements de page
- 2ExempleCrée l’ancêtre qui sert à la mesure
- 3ExempleModifie la carte à l’intérieur de l’élément englobant
- 4DéfiCorrige une requête sur l’élément lui-même
- 5ConseilNomme la boîte de mesure voulue
- 6ExplicationRends fluide un titre local
- 7DéfiTrouve l’origine de cette référence inattendue
- 8LienDistingue les décisions concernant la page et les préférences
- 9DéfiChoisis les conditions d’une carte réutilisable
- 10RécapitulatifInspecte la boîte de référence
4Fournis une image nette sans téléchargement volumineux
15 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionFournis une image nette sans téléchargement volumineux
- 2ExempleGarde la photo dans sa colonne
- 3ExplicationChoisis ce qui peut être recadré
- 4DéfiDistingue la taille affichée de la taille du fichier
- 5ExemplePropose les largeurs réelles des fichiers
- 6ExempleLis l’emplacement avant de choisir un fichier
- 7ConseilGarde sizes cohérent avec le CSS
- 8DéfiChoisis la résolution nécessaire
- 9LienUtilise des descripteurs de densité pour le logo fixe
- 10ExplicationDécide si le cadrage doit changer
- 11ExemplePlace le cadrage large avant la solution de repli
- 12DéfiCorrige l’ordre des cadrages
- 13ExplicationPropose des formats sans changer le sujet
- 14DéfiFinalise le plan des images de l’atelier
- 15RécapitulatifVérifie la boîte et la requête
5Teste une page au-delà de son aperçu soigné
12 étapes
Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.
- 1IntroductionTeste une page au-delà de son aperçu soigné
- 2ExempleParcours les largeurs de mise en page
- 3ExplicationVérifie une largeur de lecture avec zoom
- 4ExempleTrouve la boîte qui dépasse le bord
- 5DéfiGarde accessible une région large nécessaire
- 6ExempleDonne au lien lui-même une taille suffisante
- 7Point cléNe déduis pas le type d’entrée de la largeur
- 8DéfiCorrige un panneau pour le texte agrandi
- 9ExplicationTeste les animations, les thèmes et l’impression
- 10ConseilInspecte les téléchargements dans les conditions voulues
- 11DéfiPrévois une dernière vérification de l’utilisabilité
- 12RécapitulatifReproduis la condition qui a révélé le défaut
Conception web adaptative : QCM
Série 1 : Diagnostiquer les pages adaptatives dans différentes conditions10 Questions Pratiques
Question 1 sur 10
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 ?Afficher la réponseMasquer la réponse
Question 2 sur 10
width: 30vw; height: 8rem. Lorsque le texte est agrandi, il chevauche le panneau suivant. Quelle correction résout les deux défauts visibles ?Afficher la réponseMasquer la réponse
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; }
Afficher la réponseMasquer la réponse
Question 4 sur 10
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 ?Afficher la réponseMasquer la réponse
Question 5 sur 10
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 ?Afficher la réponseMasquer la réponse
Question 6 sur 10
Afficher la réponseMasquer la réponse
Question 7 sur 10
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 ?Afficher la réponseMasquer la réponse
Question 8 sur 10
Afficher la réponseMasquer la réponse
Question 9 sur 10
Afficher la réponseMasquer la réponse
Question 10 sur 10
Afficher la réponseMasquer la réponse
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
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
width: 880px. Quelle paire de changements corrige les deux causes ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
width: 60% dans un bloc englobant de 450px de large. Il n’a ni marge intérieure ni bordure. Quelle est sa largeur ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
font-size: 1.25em et possède padding-inline: 0.8em. Quelle est sa marge intérieure horizontale de chaque côté ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
clamp(1rem, 1rem + 1vw, 1.4rem) ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
(min-width: 760px) correspond-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
html { font-size: 12px; }. À partir de quelle largeur de zone d’affichage (min-width: 36em) correspond-il ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
.items avec la même spécificité dans la même couche. Que s’affiche-t-il à 70em ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
flex: 1 1 14rem. Pourquoi la dernière carte peut-elle être plus large ?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
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
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 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
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 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
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 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
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 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
max-width: 100%; height: auto. Son conteneur mesure 450px de large. Quelles dimensions affichées préservent ses proportions ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
hover: none et pointer: coarse. Comment les détails essentiels d’une carte doivent-ils être fournis ?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
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 2 sur 10
max-width: 100%; height: auto. Quel changement supplémentaire réduit la taille du téléchargement ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 3 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 4 sur 10
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 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 5 sur 10
sizes="100vw". Quel problème de chargement est probable ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 6 sur 10
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 ?Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 7 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 8 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 9 sur 10
Afficher la réponseMasquer la réponse
Enregistre cette unité pour voir cette réponse.
Question 10 sur 10
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
A
agrandissement du texte
ajustement de l’image
object-fit: contain préserve toutes les parties d’un diagramme dans une boîte de miniature uniforme.alternative textuelle
alt doit rester exacte pour chaque cadrage que l’élément picture englobant peut sélectionner.auto-fill
auto-fill réserve de la place pour des pistes vides supplémentaires.auto-fit
auto-fit réduit les pistes vides de la ligne à zéro.B
balise meta de la zone d’affichage
<head> du document et demande width=device-width, initial-scale=1.C
capacité de survol
caractéristique média orientation
cascade
ch
65ch reste lisible dans une grande fenêtre sans que cela garantisse un nombre exact de caractères.changement de résolution
chargement différé
loading="lazy", tandis que la photo principale d’ouverture se charge rapidement.cible tactile
clamp()
rem et vw dans clamp() pour pouvoir grandir avec la fenêtre dans des limites utiles.conception web adaptative
condition min-width
(min-width: 620px) est vraie à 620px et le reste pour les largeurs de zone d’affichage supérieures.confinement de taille
container-type: size a besoin d’une hauteur définie indépendamment, car son texte ne la détermine plus.contain
contain pour que toutes ses annotations restent visibles même lorsque sa forme diffère de celle de la miniature.conteneur de requête
container-type: inline-size peut fournir des informations de largeur à une carte qu’il contient.cover
cover : une partie du contenu près de ses bords peut donc disparaître.cqb
cqi
4cqi donne une taille de police préférée de 20px.cqmin et cqmax
cqmin suit la plus petite dimension de référence lorsque les deux dimensions diffèrent.CSS conçu d’abord pour les mobiles
min-width croissantes.CSS conçu d’abord pour les ordinateurs
max-width pour les petites fenêtres.D
débordement horizontal
décalage de mise en page
descripteur de densité
2x.descripteur de largeur
900w n’est correct que si le fichier candidat fourni mesure réellement 900 pixels de large.dimensionnement border-box
box-sizing: border-box pour que ses marges intérieures latérales ne provoquent pas de débordement.dimensions intrinsèques de l’image
direction artistique
dvh
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
1em de marge intérieure horizontale gagne de l’espace autour de son intitulé lorsque sa propre police grandit.É
élément source
(min-width: 55em) peut fournir le cadrage large avant le img de repli pour écran étroit.émulation d’appareils
F
feuille de style d’impression
L
largeur en pourcentage
50% mesure 240px de large lorsque son bloc englobant fournit 480px de largeur.lvh
100lvh peut passer derrière les barres d’outils mobiles lorsqu’elles sont encore visibles.M
max()
max(1rem, 2vw) ne peut pas devenir inférieur à 1rem lorsque la zone d’affichage rétrécit.min()
width: min(100%, 36rem) remplit les conteneurs étroits mais cesse de grandir à 36rem.minmax()
minmax(15rem, 1fr) ne peut pas rétrécir sous 15rem, même si son conteneur est plus étroit.mise en page intrinsèque
N
nom du conteneur
@container sidebar (width >= 30rem) cherche un ancêtre admissible nommé sidebar.O
object-position
object-position: top pour garder visible la partie supérieure de sa source lors du recadrage.opérateur logique
screen and (min-width: 40em) exige à la fois une sortie sur écran et une zone d’affichage suffisamment large.ordre dans le code source
P
panneau Réseau
sizes qui surestime l’emplacement.picture
pixel CSS
point de rupture
point de rupture fondé sur le contenu
précision du pointeur
pointer: coarse même lorsque sa zone d’affichage est large.préférence de réduction des animations
prefers-reduced-motion: no-preference.préférence de thème clair ou sombre
R
rapport de pixels de l’appareil
rapport largeur-hauteur
redistribution
rem
1.5rem mesure 30px avant tout agrandissement par zoom.repli sur la petite zone d’affichage
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
requête média
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
flex-wrap: wrap peuvent former une deuxième ligne au lieu de dépasser la page.S
sizes
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
480w, 800w et 1600w qui montrent tous la même composition.svh
min-height: 100svh pour obtenir une hauteur initiale stable tout en permettant au contenu de grandir.syntaxe d’intervalle
(600px <= width < 900px) inclut 600px mais exclut 900px.T
taille en ligne
inline-size d’une carte horizontale réagit à la largeur, tandis que sa hauteur peut toujours suivre son texte.type de média
@media print retire les contrôles de navigation qu’un lecteur ne peut pas utiliser sur papier.U
unité de requête de conteneur
5cqi grandit lorsque l’élément englobant de sa carte s’élargit, même si la zone d’affichage reste inchangée.unité relative
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
50vw utilise toujours la moitié de la largeur de la fenêtre, même si cela dépasse la barre latérale.V
vw
10vw produit une longueur calculée de 90px.Z
zone d’affichage
- 1Fonctionnement du Web
- 2HTML
- 3Formulaires HTML
- 4Sélecteurs et cascade CSS
- 5Mise en page CSS
- 6Conception web adaptative
- 7Pages web accessibles
- 8Publier un site web
À propos de cette unité
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.