Veröffentlicht am 28. Februar 2025
„Edge-to-Edge“ ist eine Android-Funktion, mit der Anwendungen die gesamte Breite und Höhe des Displays einnehmen können, indem sie hinter den Android-Systemleisten gerendert werden.
Vor Chrome 135 wurde Chrome für Android nicht randlos dargestellt. In diesem Leitfaden wird erläutert, welche Auswirkungen diese Änderung auf Websites hat und was Sie als Entwickler tun können, um sich darauf einzustellen.
Überall verfügbar
Android bietet Systemleisten, die vom Betriebssystem selbst bereitgestellt werden.
Die Statusleiste, die Untertitelzeile und die Navigationsleiste werden zusammen als Systemleisten bezeichnet. Sie zeigen wichtige Informationen wie den Akkustand, die Uhrzeit und Benachrichtigungen an und ermöglichen die direkte Interaktion mit dem Gerät von überall aus.
Oben auf dem Display befindet sich die Statusleiste, die Benachrichtigungs- und Systemsymbole enthält.
Unten auf dem Display befindet sich die Navigationsleiste, mit der Sie die Navigation über die Steuerelemente „Zurück“, „Startbildschirm“ und „Übersicht“ steuern können. Das kann die klassische Bedienung über drei Buttons oder die moderne Bedienung über Gesten sein.
Zusätzlich zu den Android-Systemleisten hat Chrome eine eigene Adressleiste, die sich beim Scrollen dynamisch ein- und ausblendet.
Chrome wird über den gesamten Bildschirm angezeigt
Wenn Sie eine Website aufrufen, wird sie in einem Rechteck dargestellt, das als Layout-Viewport bezeichnet wird.
In Chrome für Android vor Chrome 135 wird dieser Layout-Darstellungsbereich zwischen der oberen Statusleiste und der unteren Bedienung über Gesten gezeichnet. Das Vorhandensein der Adressleiste von Chrome (oder das Fehlen derselben) kann sich auf die Größe des Darstellungsbereichs auswirken. Der Darstellungsbereich wird jedoch nie in die obere Systemleiste oder die untere Leiste für die Bedienung über Gesten erweitert.
Ab Chrome 135 darf sich der Darstellungsbereich in die Navigationsleiste für die Bedienung über Gesten von Android erstrecken. Dieses Verhalten wird als Edge-to-Edge bezeichnet.
Chrome-Verhalten ohne Edge‑to‑Edge
In der folgenden Aufnahme ist Chrome für Android ohne Edge-to-Edge-Unterstützung zu sehen. Die Adressleiste von Chrome (oben) wird dynamisch ausgeblendet, wenn auf der Seite gescrollt wird. Die native Android-Statusleiste oben und die native Android-Navigationsleiste unten bleiben jedoch an ihrer Position.
Hier ändert sich die Größe des Layout-Viewports, wenn die Adressleiste von Chrome ein- oder ausgeblendet wird.
Chrome-Verhalten bei Edge‑to‑Edge
Ab Chrome 135 kann Chrome Webinhalte bis zum unteren Geräterand rendern, indem der Darstellungsbereich in den Bereich der Bedienung über Gesten erweitert wird.
Dynamisches Edge-to-Edge-Design mit „Kinn“
Standardmäßig wird in Chrome Edge-to-Edge eine neue dynamische untere Leiste, das sogenannte „Kinn“, über dem Bereich der Bedienung über Gesten angezeigt. Genau wie die Chrome-Adressleiste wird auch dieses Kinn ausgeblendet, wenn Sie mit dem Scrollen beginnen. Außerdem wirkt es sich auf die Größe des Darstellungsbereichs aus.
In der folgenden Aufnahme von Chrome für Android mit Unterstützung für Edge-to-Edge-Anzeigen werden sowohl die Chrome-Adressleiste als auch das Kinn dynamisch ein- und ausgeblendet, wenn die Seite nach unten gescrollt wird. Dadurch wird der Viewport erweitert und Webinhalte können bis zum unteren Rand des Geräts dargestellt werden.
Dieses Verhalten ist ab Chrome 135 das neue Standardverhalten von Chrome.
Standardmäßig randlos mit Opt-in
Websites, die für die Darstellung auf dem gesamten Bildschirm entwickelt wurden, können dies durch Anpassen des viewport-Meta-Tags angeben. Wenn diese Option aktiviert ist, wird der Viewport standardmäßig bis zum unteren Rand erweitert, ohne dass das Kinn jemals sichtbar ist.
Eine Seite kann angeben, dass sie den Edge-to-Edge-Modus unterstützt, indem sie das Meta-Tag viewport und den zugehörigen Schlüssel viewport-fit verwendet.
Wenn Sie die Edge-to-Edge-Funktion aktivieren möchten, legen Sie viewport-fit auf den Wert von cover fest.
<meta name="viewport" content="width=device-width, initial-scale=1, viewpo>rt-fit=cover" /
Weitere Informationen zu den verschiedenen Werten von viewport-fit
Umgang mit Inhalten, die möglicherweise durch die Bedienung über Gesten verdeckt werden
Im Edge-to-Edge-Modus sollten Sie alle Inhalte berücksichtigen, die möglicherweise durch die Leiste für die Bedienung über Gesten verdeckt werden.
In den meisten Fällen müssen Sie nichts tun, da sich das untere Kinn von selbst aus dem Weg bewegt. Nutzer können weiterhin wie gewohnt auf alle Inhalte Ihrer Website zugreifen.
Wenn Sie sich jedoch dafür entscheiden, standardmäßig den gesamten Bildschirm zu nutzen, oder ein Element am unteren Rand des Viewports positioniert ist, müssen Sie berücksichtigen, dass diese Inhalte möglicherweise verdeckt werden.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: 0;
}
Wenn das Kinn vorhanden ist, können Nutzer anfangs auf die Inhalte zugreifen. Wenn das Kinn verschwindet, werden die Inhalte jedoch von der Navigationsleiste von Android verdeckt.
Um das Problem zu beheben, können Sie die Insets für den sicheren Bereich verwenden, um die betroffenen Elemente entweder immer über der nativen Android-Bedienung über Gesten am unteren Bildschirmrand zu positionieren oder ihren Hintergrund in diesen Bereich zu erweitern.
Die Insets für den sicheren Bereich
Die Einzüge für den sicheren Bereich sind vier Umgebungsvariablen, die ein Rechteck durch seine oberen, rechten, unteren und linken Einzüge vom Rand des Viewports definieren.
Zusammen bilden diese vier Werte das Rechteck für den sicheren Bereich, in dem Inhalte platziert werden können, ohne dass sie durch Elemente wie die Android-Bedienung über Gesten verdeckt werden.
Untere Einrückung des sicheren Bereichs verwenden
Verwenden Sie für Elemente, die am unteren Rand des Darstellungsbereichs positioniert sind, safe-area-inset-bottom als Wert für die bottom-Eigenschaft, damit sie nicht unter der Bedienung über Gesten-Navigationsleiste positioniert werden. Der von safe-area-inset-bottom zurückgegebene Wert wird dynamisch aktualisiert, wenn das Kinn aus dem Weg geräumt wird. So bleiben die unten positionierten Elemente über der Bedienung über Gesten von Android.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: env(safe-area-inset-bottom, 0px);
}
bottom verwendet. Wenn das Kinn sichtbar ist, befindet sich die Leiste über der Bedienung über Gesten von Android. Wenn das Kinn verschwindet, befindet sich das Element auch darüber.Wie Sie in den Abbildungen sehen können, ist das Ergebnis noch nicht perfekt: Wenn das Kinn aus dem Weg geräumt wird, werden die verbleibenden Seiteninhalte im Bereich der Navigationsleiste für Gesten sichtbar. Das liegt daran, dass sich der Darstellungsbereich in diesem Zustand in den Bereich der Bedienung über Gesten erstreckt.
Damit Inhalte nicht unter Inhalten mit Anker unten gerendert werden, wird häufig padding-bottom auf safe-area-inset-bottom gesetzt. So wird das unten verankerte Element automatisch größer, wenn das Kinn verdeckt wird. Das funktioniert zwar, wird aber nicht empfohlen, da es zu Layout-Thrashing kommt, während das Kinn aus dem Weg geräumt wird.
Legen Sie padding nicht auf einen Wert für „safe-area-inset“ fest.
.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. */
}
Unteren Inset des Safe Area und unteren maximalen Inset des Safe Area verwenden
Stattdessen wird empfohlen, eine Kombination aus safe-area-inset-bottom und safe-area-max-inset-bottom zu verwenden. Im Gegensatz zum dynamischen safe-area-inset-bottom, das dynamisch aktualisiert wird, wenn das Kinn aus dem Weg gerät, stellt safe-area-max-inset-bottom den Maximalwert von safe-area-inset-bottom dar.
Verwenden Sie safe-area-max-inset-bottom, um das unten verankerte Element nach vorn zu verschieben, und kombinieren Sie es mit safe-area-inset-bottom, um das Element nach unten zu ziehen, sodass es sich hinter dem Kinn befindet.
safe-area-max-inset-bottom in Kombination mit safe-area-inset-bottom verwenden
: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));
}
Das visuelle Ergebnis ist dasselbe wie beim padding-bottom: env(safe-area-inset-bottom, 0px);-Ansatz, aber die Leistung ist viel besser. Da sich nur der berechnete Wert für bottom ändern muss, wenn sich das Kinn entfernt, kommt es nicht zu Layout-Thrashing.
Edge-to-Edge vor Chrome 135 ausprobieren
Wenn Sie das Edge-to-Edge-Design vor der öffentlichen stabilen Version ausprobieren möchten, müssen Sie über chrome://flags einige Chrome-Funktions-Flags aktivieren:
EdgeToEdgeBottomChin(optional: Wenn Sie „Enabled Debug“ auswählen, wird die Hälfte des Kinns rosa gefärbt, um es besser von anderen Benutzeroberflächen zu unterscheiden)DrawCutOutEdgeToEdgeBottomBrowserControlsRefactor(don't set to "Enabled" but set to "Enabled Dispatch yOffset")DynamicSafeAreaInsetsDynamicSafeAreaInsetsOnScrollEdgeToEdgeWebOptInDrawKeyNativeEdgeToEdgeEdgeToEdgeSafeAreaConstraint(nicht auf „Aktiviert“, sondern auf „Scrollbare Variante aktiviert“ festlegen)
Die folgenden Flags dürfen nicht aktiviert sein:
DrawNativeEdgeToEdgeEdgeToEdgeEverywhere
Starten Sie Chrome zweimal neu.
Ihre Meinung ist uns wichtig
Wenn Sie Feedback zu Chrome und der Edge-to-Edge-Implementierung haben, erstellen Sie bitte einen Chromium-Bug in der Komponente „UI > Browser > Mobile > EdgeToEdge“. Vielen Dank für Ihr Feedback.