Guide de migration de Chrome sur Android de bord à bord

Publié le : 28 février 2025

L'affichage bord à bord est une fonctionnalité Android qui permet aux applications de s'étendre sur toute la largeur et la hauteur de l'écran en s'affichant derrière les barres système Android.

Avant Chrome 135, Chrome sur Android n'affichait pas le contenu bord à bord. Ce guide explique l'impact de ce changement sur les sites Web et ce que vous pouvez faire en tant que développeur pour l'adopter.

Barres partout

Android est fourni avec des barres système fournies par le système d'exploitation lui-même.

La barre d'état, la barre de légende et la barre de navigation sont appelées barres système. Elles affichent des informations importantes telles que le niveau de batterie, l'heure et les alertes de notification, et permettent d'interagir directement avec l'appareil où que vous soyez.

En haut de l'écran se trouve la barre d'état, qui contient des icônes de notification et des icônes système.

Illustration de la partie supérieure d'un appareil Android avec la barre système mise en évidence.
Barre d'état sur Android mise en évidence (source).

En bas de l'écran se trouve la barre de navigation, qui vous permet de contrôler la navigation à l'aide des commandes "Retour", "Accueil" et "Récents". Il peut s'agir de la barre de navigation classique à trois boutons ou de la barre de navigation moderne par gestes.

Illustration de la partie inférieure d'un appareil Android avec la barre de navigation par gestes visible.
Barre de navigation par gestes (source).

En plus des barres système Android, Chrome est fourni avec une barre d'adresse qui se développe et se rétracte de manière dynamique lorsque vous faites défiler la page.

Chrome passe au bord à bord

Lorsque vous consultez un site Web, il s'affiche dans un rectangle appelé fenêtre d'affichage (de mise en page).

Dans Chrome sur Android, avant Chrome 135, cette fenêtre d'affichage de la mise en page est dessinée entre la barre d'état supérieure et la barre de navigation gestuelle inférieure. La présence (ou l'absence) de la barre d'adresse de Chrome peut affecter la taille de la fenêtre d'affichage, mais celle-ci ne s'étendra jamais dans la barre système supérieure ni dans la barre de navigation par gestes inférieure.

Illustrations d'un appareil Android avec Chrome sur Android qui n'est pas bord à bord. L'illustration de gauche montre Chrome avec la barre d'adresse développée. Entre la barre d'adresse et la barre de navigation par gestes se trouve une zone verte de 100 svh. L'illustration de droite montre Chrome avec la barre d'adresse rétractée. Entre la barre d'état et la barre de navigation par gestes se trouve une boîte verte de 100 lvh. Le viewport lui-même est entouré d'un contour bleu en pointillés.
Taille minimale et maximale de la fenêtre d'affichage dans Chrome sur Android avant Chrome 135. Ces tailles sont appelées "petite fenêtre d'affichage" et "grande fenêtre d'affichage". La fenêtre d'affichage elle-même est entourée d'une bordure bleue en pointillés.

À partir de Chrome 135, la fenêtre d'affichage peut s'étendre dans la barre de navigation par gestes d'Android. C'est ce qu'on appelle le bord à bord.

Illustrations de la fenêtre d'affichage dans Chrome sur Android qui n'est pas bord à bord (à gauche) et dans Chrome sur Android qui est bord à bord (à droite). Chaque visualisation comporte une zone bleue qui représente un élément dont la hauteur est définie sur 100 vh. Le texte de gauche explique ce qui se passe lorsque Chrome n'est pas bord à bord. Il indique "La fenêtre d'affichage reste limitée entre la barre d'état supérieure et la barre de navigation par gestes inférieure". Le texte à droite explique ce qui se passe lorsque Chrome est bord à bord. Le message suivant s'affiche : "La fenêtre d'affichage s'étend dans la barre de navigation par gestes".
La grande fenêtre d'affichage montrée dans Chrome sur Android qui n'est pas bord à bord (à gauche) et dans Chrome qui est bord à bord (à droite). Dans Chrome avec la prise en charge bord à bord, la fenêtre d'affichage s'étend dans la zone de la barre de navigation par gestes lorsque les barres d'outils dynamiques de Chrome sont rétractées.

Comportement de Chrome sans bord à bord

L'enregistrement suivant montre Chrome sur Android sans prise en charge bord à bord. La barre d'adresse de Chrome (en haut) se déplace de manière dynamique lorsque la page est défilée. Toutefois, la barre d'état supérieure et la barre de navigation inférieure natives d'Android restent fixes.

Ancien comportement : Chrome sur Android sans compatibilité bord à bord et https://developer.chrome.com/ chargé.

Ici, la taille de la fenêtre d'affichage de la mise en page change lorsque la barre d'adresse de Chrome se rétracte ou se développe.

Comportement de Chrome avec le mode bord à bord

À partir de Chrome 135, Chrome peut afficher le contenu Web jusqu'au bord inférieur de l'appareil en étendant la fenêtre d'affichage dans la zone de la barre de navigation par gestes.

Bord à bord dynamique avec "le menton"

Par défaut, Chrome bord à bord affiche une nouvelle barre inférieure dynamique appelée "menton" au-dessus de la zone de la barre de navigation par gestes. Comme la barre d'adresse Chrome, cette barre disparaît lorsque vous commencez à faire défiler l'écran et affecte la taille de la fenêtre d'affichage.

Dans l'enregistrement suivant de Chrome sur Android avec la prise en charge bord à bord, la barre d'adresse et la bande inférieure de Chrome se rétractent de manière dynamique lorsque la page défile vers le bas. Cela entraîne l'expansion de la fenêtre d'affichage, ce qui permet au contenu Web d'être dessiné jusqu'au bord inférieur de l'appareil.

Nouveau comportement : Chrome sur Android avec prise en charge bord à bord et https://developer.chrome.com/ chargé. Remarquez comment le menton inférieur se déplace lorsque la page défile.

Ce comportement de menton est le nouveau comportement Chrome par défaut à partir de Chrome 135.

Passer au mode bord à bord par défaut avec une option d'activation

Les sites Web conçus pour le mode bord à bord peuvent l'indiquer en modifiant la balise Meta viewport. Lorsqu'il est activé, la fenêtre d'affichage s'étend par défaut jusqu'au bord inférieur sans que le menton ne soit jamais visible.

Nouveau comportement avec l'activation du mode bord à bord : la fenêtre d'affichage s'étend jusqu'au bord inférieur lors du chargement de la page. Aucun menton n'est visible.

Une page peut indiquer qu'elle est compatible avec le mode bord à bord à l'aide de la balise Meta viewport et de sa clé viewport-fit.

Pour activer l'affichage bord à bord, définissez viewport-fit sur la valeur cover.

<meta name="viewport" content="width=device-width, initial-scale=1, viewpo>rt-fit=cover" /

En savoir plus sur les différentes valeurs de viewport-fit sur MDN

Gérer le contenu qui pourrait être masqué par la barre de navigation par gestes

En mode bord à bord, vous devez tenir compte de tout contenu qui pourrait être masqué par la barre de navigation par gestes.

Dans la plupart des cas, vous n'avez rien à faire, car la bande inférieure se déplace d'elle-même. Les utilisateurs peuvent toujours accéder à tous les contenus de votre site Web comme avant.

Toutefois, si vous choisissez d'activer le mode bord à bord par défaut ou si vous avez un élément positionné en bas de la fenêtre d'affichage, vous devrez peut-être tenir compte du fait que ce contenu peut être masqué.

.stuck-to-the-bottom-of-the-viewport {
  position: fixed;
  bottom: 0;
}

Lorsque le menton est présent, le contenu est initialement accessible aux utilisateurs, mais il est obstrué par la barre de navigation d'Android à mesure que le menton disparaît.

Illustrations d'un appareil Android avec Chrome sur Android en mode bord à bord. L'illustration de gauche montre Chrome avec le menton visible. Le contenu ancré en bas (en rouge) se trouve juste au-dessus. L'illustration de droite montre Chrome sans la bande inférieure. Le contenu ancré en bas se trouve alors contre le bord inférieur de l'appareil. Le texte qui l'accompagne précise que le contenu situé en bas de l'écran est désormais masqué par la barre de navigation par gestes.
Illustration d'un site Web avec un élément positionné en bas avec `bottom: 0`. Lorsque le menton est visible, l'élément positionné en bas se trouve au-dessus de la barre de navigation d'Android. Une fois le menton déplacé, l'élément est positionné derrière la barre de navigation d'Android, qui le masque partiellement à ce moment-là.

Pour atténuer ce problème, utilisez les encarts de la zone sûre afin de toujours positionner les éléments concernés au-dessus de la barre de navigation par gestes native d'Android, ou de faire en sorte que leur arrière-plan s'étende dans cette zone.

Encarts de la zone de sécurité

Les encarts de zone sécurisée sont quatre variables d'environnement qui définissent un rectangle par ses encarts supérieur, droit, inférieur et gauche à partir du bord de la fenêtre d'affichage.

Ces quatre valeurs combinées forment le rectangle de zone de sécurité dans lequel il est possible de placer du contenu sans qu'il soit obstrué par des éléments tels que la barre de navigation gestuelle Android.

Illustration d'un appareil Android avec Chrome en mode bord à bord. Le menton est doté d'une vue coulissante. La zone de sécurité est représentée par un rectangle jaune à l'intérieur de Chrome. Son bord inférieur se trouve juste au-dessus de la barre de navigation par gestes. La partie inférieure de la fenêtre d'affichage, peinte en bleu, est peinte dans la barre de navigation par gestes. Le texte qui l'accompagne indique que le rectangle de la zone de sécurité est inséré dans la fenêtre d'affichage par l'encart inférieur de la zone de sécurité, ce qui empêche le contenu d'être affiché sous la barre de navigation par gestes.
Illustration de Chrome en mode bord à bord avec la fenêtre d'affichage et le rectangle de zone sécurisée peints en jaune. Étant donné que le menton est rétracté, l'encart inférieur de la zone de sécurité empêche le rectangle de la zone de sécurité d'atteindre la barre de navigation par gestes. Par conséquent, vous voyez l'aperçu de la fenêtre d'affichage sous cette barre de navigation par gestes.

Utiliser l'encart inférieur de la zone de sécurité

Pour les éléments positionnés en bas de la fenêtre d'affichage, utilisez safe-area-inset-bottom comme valeur pour la propriété bottom afin d'éviter qu'ils ne soient placés sous la barre de navigation par gestes. La valeur renvoyée par safe-area-inset-bottom est mise à jour de manière dynamique lorsque le menton se déplace, ce qui permet aux éléments positionnés en bas de rester au-dessus de la barre de navigation par gestes d'Android.

.stuck-to-the-bottom-of-the-viewport {
  position: fixed;
  bottom: env(safe-area-inset-bottom, 0px);
}
Illustration d'un appareil Android avec Chrome en mode bord à bord. Dans la visualisation de gauche, le menton est visible et le contenu ancré en bas se trouve juste au-dessus. Dans la visualisation de droite, le menton n'est pas visible et le contenu ancré en bas est positionné au même endroit que celui de gauche. Le contenu normal est alors visible sous la barre de navigation par gestes.
Illustrations d'un site Web avec un élément positionné en bas qui utilise l'encart de zone sécurisée inférieure avec la propriété bottom. Lorsque le menton est visible, la barre se trouve au-dessus de la barre de navigation par gestes d'Android. Lorsque le menton disparaît, l'élément se trouve également au-dessus.

Comme vous pouvez le voir sur les illustrations, le résultat n'est pas encore parfait : lorsque le menton est déplacé, le contenu restant de la page devient visible dans la zone de la barre de navigation par gestes. En effet, dans cet état, la fenêtre d'affichage s'étend dans la zone de la barre de navigation par gestes.

Pour éviter que le contenu ne soit affiché sous le contenu ancré en bas, une approche courante consiste à définir padding-bottom sur safe-area-inset-bottom. De cette façon, l'élément ancré en bas se développe automatiquement lorsque le menton se cache. Bien que cette approche fonctionne, elle n'est pas recommandée, car elle entraîne un layout thrashing lorsque le menton se déplace.

 Ne définissez pas padding sur une valeur d'encart de zone sécurisée.

.stuck-to-the-bottom-of-the-viewport {
  position: fixed;
  bottom: 0;
  padding-bottom: env(safe-area-inset-bottom, 0px); /* 🛑 Don't do this, as it causes layout thrashing. */
}

Utiliser l'encart inférieur de la zone de sécurité et l'encart inférieur maximal de la zone de sécurité

L'approche recommandée consiste plutôt à utiliser une combinaison de safe-area-inset-bottom et safe-area-max-inset-bottom. Contrairement à safe-area-inset-bottom dynamique, qui se met à jour dynamiquement lorsque le menton se dégage, safe-area-max-inset-bottom représente la valeur maximale de safe-area-inset-bottom.

Utilisez safe-area-max-inset-bottom pour agrandir l'élément ancré en bas au premier plan, et combinez-le avec safe-area-inset-bottom pour faire descendre l'élément afin qu'il se trouve derrière le menton.

 Utilisez safe-area-max-inset-bottom en combinaison avec safe-area-inset-bottom.

:root {
  --safe-area-max-inset-bottom: env(safe-area-max-inset-bottom, 36px);
  --bottom-bar-height: 50px;
}

.stuck-to-the-bottom-of-the-viewport {
  position: fixed;
  bottom: 0;
  height: var(--bottom-bar-height);
  padding-bottom: var(--safe-area-max-inset-bottom);
  bottom: calc(env(safe-area-inset-bottom, 0px) - var(--safe-area-max-inset-bottom));
}

body {
  padding-bottom: calc(var(--bottom-bar-height) + var(--safe-area-max-inset-bottom));
}

Essayer une démo en direct

Le résultat visuel est le même que celui de l'approche padding-bottom: env(safe-area-inset-bottom, 0px);, mais les performances sont bien meilleures. Étant donné que seule la valeur calculée pour bottom doit changer lorsque le menton s'éloigne, aucun thrashing de mise en page ne se produit.

Illustration d'un appareil Android avec Chrome en mode bord à bord. Dans la visualisation de gauche, le menton est visible et le contenu ancré en bas se trouve juste au-dessus. Dans la visualisation de droite, le menton n'est pas visible et le contenu ancré en bas s'est visuellement agrandi pour occuper l'espace où se trouvait le menton à l'origine. Cela permet d'obtenir un bel effet visuel et d'empêcher le contenu de la page normale de devenir visible sous la zone de la barre de navigation par gestes.
Illustrations d'un site Web avec un élément ancré en bas qui tient compte des encarts de la zone de sécurité. Lorsque le menton est visible (à gauche), l'élément se trouve au-dessus du menton. Lorsque le bas de l'écran n'est pas visible, l'élément se fond visuellement dans la barre de navigation par gestes d'Android.

Essayer le mode bord à bord avant Chrome 135

Pour essayer le mode bord à bord avant sa version stable publique, vous devez activer plusieurs flags de fonctionnalités Chrome via chrome://flags :

  • EdgeToEdgeBottomChin (vous pouvez éventuellement définir la valeur sur "Enabled Debug" pour colorer la moitié du menton en rose et le distinguer plus clairement des autres éléments de l'UI)
  • DrawCutOutEdgeToEdge
  • BottomBrowserControlsRefactor (ne définissez pas la valeur sur "Activé", mais sur "Décalage Y activé")
  • DynamicSafeAreaInsets
  • DynamicSafeAreaInsetsOnScroll
  • EdgeToEdgeWebOptIn
  • DrawKeyNativeEdgeToEdge
  • EdgeToEdgeSafeAreaConstraint (ne définissez pas la valeur sur "Activé", mais sur "Variation avec défilement activé")

Assurez-vous que les options suivantes ne sont pas activées :

  • DrawNativeEdgeToEdge
  • EdgeToEdgeEverywhere

Redémarrez Chrome deux fois.

Votre avis nous intéresse

Si vous avez des commentaires sur Chrome et son implémentation bord à bord, veuillez nous contacter en signalant un bug Chromium dans le composant "UI > Browser > Mobile > EdgeToEdge". Vos commentaires nous sont très utiles.