scrollbar-gutter · полоса прокрутки · WebKit · Chromium · удалённый Mac · 2026

Приёмка фронтенда в 2026 году на удалённом Mac:
scrollbar-gutter и полоса прокрутки — таблица Safari и Chromium и три шага прогрессивного улучшения

21.04.2026 Релиз фронтенда / CSS-вёрстка 8 мин чтения
Slug: 2026-scrollbar-gutter-safari-chromium-remote-mac.html

Для кого: команды, которым нужно подписать релиз, когда вертикальная прокрутка то появляется, то исчезает: центрированные блоки и липкие шапки «прыгают», а Lighthouse остаётся зелёным. Один только Chromium в Linux-CI не воспроизводит оверлейные полосы macOS и предпочтения пользователя. Ниже — матрица браузеров, таблица различий, шаги реализации с копируемым CSS и HTML, откат и мониторинг, FAQ. Рядом по теме: Playwright и Safari на удалённом Mac, устройство, симулятор и облако для совместимости, Node, npm и чек-лист Safari. Финальный блок ведёт на главную, тарифы и аренду или покупку без обязательного входа.

Цель текста — не «красивый CSS», а исполняемая приёмка: зафиксировать, какой движок как резервирует ширину под полосу, какие артефакты приложить к тикету и какой однострочный откат оставить дежурному. Три шага прогрессивного улучшения встроены в раздел «Шаги реализации»; дублирующий маркированный чек-лист в конце раздела можно копировать в описание pull request.

01 Матрица браузеров

Закрепите строки до заморозки стилей. Версии подставьте из точных сборок удалённого Mac и целевых клиентов; в приёмке недопустима формулировка «последний Safari» без номера.

Цель Роль в приёмке Что записать
Safari на macOS (стабильный WebKit) Эталон WebKit для оверлейных полос и настроек «показывать прокрутку». Светлая и тёмная тема хрома, предпочтение видимости полосы, внутренняя ширина при открытых инструментах.
Chromium (Chrome или Edge на macOS) Вторая колонка: оверлей, масштаб, те же SHA staging. Переключатель оверлея, дробный масштаб, один URL и один коммит для обоих движков.
Сессия удалённого Mac Воспроизводимые доказательства без отправки ноутбуков. Метаданные записи экрана, Git SHA в имени файла, ширина окна в пикселях.

Если продукт обещает поддержку iPadOS, добавьте отдельную строку для планшета: ширина 100dvh и полоса в системной рамке дают дополнительные сдвиги, не совпадающие с десктопом.

02 Таблица различий

Подтверждайте каждую ячейку на удалённом Mac: минорные выпуски WebKit по-прежнему двигают метрики полосы. Сравнивайте одинаковую логическую ширину viewport, а не только ширину окна ОС.

Тема Safari / WebKit Chromium
scrollbar-gutter: stable Резервирует место при поддержке; проверьте корневой overflow и предков с transform, иначе gutter «уедет» относительно макета. Поведение предсказуемее; всё равно прогоните модалки, которые ставят overflow: hidden на body.
both-edges Симметричная математика может не совпасть с макетом, рассчитанным на одну «классическую» полосу. Перепроверьте RTL и вертикальные режимы письма, если дизайн опирается на край экрана.
Оверлей и классика Пользовательские настройки меняют момент появления зарезервированной ширины; в отчёте назовите сценарий «показывать всегда» и «авто». Настройки оверлея на macOS сжимают резерв; Linux CI без этих настроек вводит в заблуждение.
Деградация без свойства Старый WebKit может игнорировать правило; нужен явный второй уровень. Сочетайте @supports с политикой для финансовых и юридических экранов, где сдвиг недопустим.

03 Шаги реализации

Выкатывайте три уровня: современный gutter, классический резерв через overflow-y: scroll, задокументированные исключения для встраиваемых виджетов, которые борются с корневым скроллом.

  1. Ограничьте scrollbar-gutter через @supports. Не смешивайте gutter на html и принудительный скролл на вложенной оболочке без теста — получите двойной отступ.
  2. Один владелец вертикального скролла. Gutter на html, внутренние оболочки — min-height: 100dvh. Маркер в разметке помогает QA: класс на корне документа.
  3. Деградация через overflow. Если @supports not (scrollbar-gutter: stable) или QA видит двойную канавку, включайте html { overflow-y: scroll; } и опишите компромисс «полоса всегда занимает место» в журнале релиза.

Минимальный связанный набор CSS (подстройте селекторы под ваш reset):

@supports (scrollbar-gutter: stable) {
  html {
    scrollbar-gutter: stable;
    /* при симметричном макете: */
    /* scrollbar-gutter: stable both-edges; */
  }
}

@supports not (scrollbar-gutter: stable) {
  html {
    overflow-y: scroll;
  }
}

HTML-скелет для привязки правил и ручной проверки в Web Inspector (один корневой класс — проще искать в тикете):

<!DOCTYPE html>
<html lang="ru" class="layout-scroll-root">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <title>Staging — gutter QA</title>
    <link rel="stylesheet" href="/app.css" />
  </head>
  <body>
    <div id="app" style="min-height:200vh">
      <header class="sticky top-0">липкий хром для сравнения ширины</header>
      <main>…длинный контент…</main>
    </div>
  </body>
</html>

На маршруте с высокой модалкой зафиксируйте одинаковую внутреннюю ширину контентной сетки в Safari и Chromium до и после открытия диалога; приложите пару скриншотов к каждому кандидату в прод.

Три шага для копирования в PR (краткий чек-лист): (1) зафиксировать активный уровень — gutter или overflow; (2) прогнать два движка на удалённом Mac с одинаковой шириной; (3) приложить скриншоты и значение предпочтения полосы в macOS.

04 Откат и мониторинг

Вынесите выбор уровня за фичефлаг или конфиг, чтобы ночная смена откатила одну строку без поиска автора. Мониторьте кумулятивный сдвиг макета на сценариях «диалог открыт / закрыт» с разрезом по Safari и Chromium. Сторонние баннеры, которые вешают overflow на body, ломают согласованность gutter — держите список таких интеграций и повторный смоук после их обновления.

Факты для записи

Предпочтение полосы в macOS, сборка браузера, внутренняя ширина до и после модалки, активен ли уровень scrollbar-gutter или overflow-y: scroll.

Порог приёмки

Нет необъяснимого горизонтального скачка шире одного аппаратного пикселя в сетке героя при появлении вертикальной прокрутки по стандартному сценарию демо.

Эскалация

Если после двух патчей движки всё ещё расходятся, заморозьте простой уровень overflow-y: scroll и перенесите спор в дизайн-токены, а не в эмуляцию полосы на JS.

05 FAQ

Заменяет ли scrollbar-gutter приём overflow-y: scroll?

Частично: свойство уменьшает горизонтальный сдвиг при появлении полосы, но не закрывает вложенные скроллеры и сложные модалки. Для старых WebKit оставьте overflow-y: scroll как явный уровень деградации.

Зачем удалённый Mac, если в пайплайне уже есть Chromium?

Потому что геометрия полосы на macOS Safari завязана на AppKit и отличается от типичного Linux-раннера. Подпись «принято» должна опираться на WebKit на железе Apple или на арендованную сессию Mac в облаке.

Что мониторить после выката?

CLS на ключевых маршрутах с диалогом, сравнение по тегам сборки и алерты при смене стороннего CSS корневого overflow.

Когда включать both-edges?

Только если дизайн и макет явно требуют симметричного резерва с обеих сторон; иначе вы рискуете получить лишний отступ относительно макета в Figma, где полоса нарисована односторонне.

Удалённый Mac · Safari · Chromium · без входа

Закройте регрессии полосы прокрутки на реальном WebKit

Откройте главную, тарифы и помощь без регистрации, затем арендуйте или купите доступ к Mac. Продолжите чтение: тесты Playwright и Safari, таблица способов проверки Safari и каталог блога.

Приёмка WebKit Приёмка Chromium scrollbar-gutter
Аренда Mac — QA полосы