Опубликовано: 28 февраля 2025 г.
Отображение от края до края – это функция Android, которая позволяет приложениям занимать всю ширину и высоту экрана, отрисовывая контент за системными строками Android.
До версии Chrome 135 браузер Chrome на устройствах Android не занимал всю площадь экрана. В этом руководстве рассказывается, как это изменение повлияет на сайты и что вы как разработчик можете сделать, чтобы адаптироваться к нему.
Бары везде
В Android есть системные строки, которые предоставляет сама операционная система.
Строка состояния, строка заголовка и панель навигации вместе называются системными строками. На них отображается важная информация, например уровень заряда батареи, время и уведомления, а также можно взаимодействовать с устройством.
В верхней части экрана находится строка состояния, в которой показываются значки уведомлений и системные значки.
В нижней части экрана находится панель навигации, с помощью которой можно управлять навигацией, используя кнопки "Назад", "Главный экран" и "Обзор". Это может быть классическая навигация с тремя кнопками или современная панель навигации жестами.
Помимо системных панелей Android, в Chrome есть адресная строка, которая динамически расширяется и сворачивается при прокрутке.
Chrome занимает весь экран
Когда вы открываете сайт, он показывается в прямоугольнике, который называется областью просмотра макета.
В Chrome на Android до версии 135 область макета отрисовывается между верхней строкой состояния и нижней панелью навигации жестами. Наличие адресной строки Chrome может влиять на размер области просмотра, но она никогда не будет расширяться до верхней системной строки или нижней панели навигации жестами.
В Chrome 135 и более поздних версиях область просмотра может выходить за пределы панели навигации жестами Android. Это называется отображением от края до края.
Поведение Chrome без отображения от края до края
На записи ниже показано, как адресная строка Chrome (вверху) динамически скрывается при прокрутке страницы в Chrome на устройстве Android без поддержки полноэкранного режима. Однако верхняя строка состояния и нижняя панель навигации Android остаются на своих местах.
В этом случае размер области просмотра макета меняется, когда адресная строка Chrome сворачивается или разворачивается.
Как Chrome работает с отображением от края до края
В Chrome 135 и более поздних версиях веб-контент может отображаться до нижнего края устройства, поскольку область просмотра расширяется до панели навигации жестами.
Динамический безрамочный экран с "подбородком"
По умолчанию в Chrome в полноэкранном режиме показывается новая динамическая нижняя панель, которая называется "подбородок" и располагается над панелью навигации жестами. Как и адресная строка Chrome, эта панель исчезает, когда вы начинаете прокручивать страницу, и влияет на размер области просмотра.
На записи ниже показано, как в Chrome на устройстве Android с поддержкой полноэкранного режима адресная строка и нижняя панель автоматически скрываются при прокрутке страницы вниз. В результате область просмотра расширяется, и веб-контент может быть отрисован до нижнего края устройства.
Такое поведение подбородка является новым поведением Chrome по умолчанию, начиная с версии 135.
По умолчанию показывать контент от края до края с возможностью отключения
Сайты, созданные для работы в режиме "от края до края", могут указать это, изменив метатег viewport. Если этот параметр включен, область просмотра по умолчанию будет расширяться до нижнего края, и подбородок никогда не будет виден.
Чтобы указать, что страница поддерживает режим "от края до края", используйте метатег viewport с ключом viewport-fit.
Чтобы включить режим "от края до края", задайте для параметра viewport-fit значение cover.
<meta name="viewport" content="width=device-width, initial-scale=1, viewpo>rt-fit=cover" /
Подробнее о различных значениях атрибута viewport-fit…
Как работать с контентом, который может быть перекрыт панелью навигации жестами
В режиме "От края до края" учитывайте, что панель навигации жестами может закрывать часть контента.
В большинстве случаев вам не нужно ничего делать, потому что нижняя часть подбородка убирается сама. Пользователи по-прежнему могут просматривать весь контент на вашем сайте.
Однако если вы включите показ от края до края по умолчанию или у вас есть элемент, расположенный в нижней части области просмотра, вам может потребоваться учесть, что этот контент может быть перекрыт.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: 0;
}
Если подбородок есть, пользователи сначала смогут видеть контент, но когда он исчезнет, контент будет закрыт панелью навигации Android.
Чтобы устранить проблему, используйте отступы безопасной зоны, чтобы всегда размещать затронутые элементы над нижней панелью навигации жестами Android или чтобы их фон распространялся на эту область.
Вставки безопасной области
Вставки безопасной области – это четыре переменные среды, которые определяют прямоугольник по его верхнему, правому, нижнему и левому вставкам от края области просмотра.
Эти четыре значения образуют прямоугольник безопасной области, в которой можно размещать контент, не опасаясь, что он будет закрыт элементами интерфейса, например панелью навигации Android.
Использование нижнего отступа безопасной области
Для элементов, расположенных в нижней части окна просмотра, используйте значение safe-area-inset-bottom для свойства bottom, чтобы они не оказались под панелью навигации жестами. Значение, возвращаемое safe-area-inset-bottom, динамически обновляется, когда подбородок убирается, поэтому элементы, расположенные внизу, остаются над панелью навигации жестами Android.
.stuck-to-the-bottom-of-the-viewport {
position: fixed;
bottom: env(safe-area-inset-bottom, 0px);
}
bottom. Если нижняя панель видна, панель поиска находится над панелью навигации жестами Android. Когда подбородок исчезает, элемент также оказывается над ним.Как видно на иллюстрациях, результат пока не идеален: когда подбородок убирается, оставшийся контент страницы становится виден в области панели навигации жестами. Это связано с тем, что в этом состоянии область просмотра распространяется на область панели навигации жестов.
Чтобы контент не отрисовывался под контентом, закрепленным внизу, обычно задают для параметра padding-bottom значение safe-area-inset-bottom. В этом случае элемент, прикрепленный к нижней части экрана, будет автоматически увеличиваться по мере того, как подбородок будет скрываться. Хотя это и работает, такой подход не рекомендуется, поскольку приводит к пробуксовке макета, пока подбородок убирается с экрана.
Не задавайте для параметра padding значение safe-area-inset.
.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. */
}
Использование нижнего отступа безопасной зоны и максимального нижнего отступа безопасной зоны
Вместо этого рекомендуется использовать сочетание safe-area-inset-bottom и safe-area-max-inset-bottom. В отличие от динамического параметра safe-area-inset-bottom, который обновляется, когда подбородок убирается с экрана, параметр safe-area-max-inset-bottom представляет максимальное значение параметра safe-area-inset-bottom.
Используйте safe-area-max-inset-bottom, чтобы увеличить элемент, закрепленный внизу, и объедините его с safe-area-inset-bottom, чтобы опустить элемент и разместить его за подбородком.
Используйте safe-area-max-inset-bottom в сочетании с 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));
}
Визуально результат будет таким же, как при использовании подхода padding-bottom: env(safe-area-inset-bottom, 0px);, но производительность будет намного выше. Поскольку при движении подбородка меняется только вычисляемое значение для bottom, не происходит перерисовки макета.
Попробуйте режим "от края до края" до выхода Chrome 135
Чтобы попробовать режим "от края до края" до его публичного стабильного выпуска, вам нужно включить несколько экспериментальных параметров Chrome через chrome://flags:
EdgeToEdgeBottomChin(при необходимости задайте значение "Включить отладку", чтобы половина подбородка была окрашена в розовый цвет и его было проще отличить от других элементов интерфейса)DrawCutOutEdgeToEdgeBottomBrowserControlsRefactor(не устанавливайте значение "Включено", а выберите "Включено смещение по оси Y")DynamicSafeAreaInsetsDynamicSafeAreaInsetsOnScrollEdgeToEdgeWebOptInDrawKeyNativeEdgeToEdgeEdgeToEdgeSafeAreaConstraint(не устанавливайте значение "Включено", а выберите "Включена прокручиваемая версия")
Убедитесь, что следующие флаги не включены:
DrawNativeEdgeToEdgeEdgeToEdgeEverywhere
Дважды перезапустите Chrome.
Нам важно ваше мнение
Если у вас есть отзывы о Chrome и его реализации на весь экран, сообщите нам об этом, создав ошибку Chromium в компоненте "UI > Browser > Mobile > EdgeToEdge". Благодарим за отзыв.