Safari Technology Preview 251: re-snap при конфликте двух осей. Локальная диагностика: карта «до layout → конфликтующие targets → финальные offsets → выбранная ось»; одно обратимое воздействие, независимый контроль, privacy-stop и пакет для разработчика без реальных данных.
Как распознать именно этот симптом
Запрос «как проверить выбор block-axis snap box при конфликте двух осей в Safari Technology Preview 251» отвечает на одну самостоятельную боль: после изменения layout двухосный scroller повторно привязывается к inline-цели вместо ожидаемой block-axis цели. Узкий ожидаемый ответ здесь не равен обещанию исправления на любом сайте: нужно различить статус reproduced, not reproduced, unsupported, environment-blocked и unknown на одном фиксированном стенде. Главный соседний эффект, который обязан быть отделён, — обычная инерция прокрутки вместо алгоритма re-snap после layout. Поэтому до любого действия записывают наблюдение словами, а не диагнозом, и заранее задают успешный исход: при конфликте повторный snap выбирает помеченную block-axis цель, а контроль подтверждает исходную вертикальную геометрию. Если результат не повторяется после rollback, первая попытка не считается доказательством.
Что сообщает WebKit и чего не сообщает
Официальные Release Notes WebKit датированы 26 августа 2026 года и относят пункт к Safari Technology Preview 251: исправлен re-snapping: при конфликте двух осей предпочтение отдаётся block-axis box. Прямая первичная запись — 318343@main. Эта пара источников подтверждает наличие и техническую границу change item, но не подтверждает частоту жалоб, поисковый спрос, результат на конкретном устройстве, перенос в stable Safari или причину любого внешне похожего сбоя. Публичная ветка о релизе служит только свежим community lead; её комментарии и поисковый сниппет не используются как evidence. Вывод статьи ограничен указанной функцией и локальным воспроизведением.
Наблюдаемые поля до запуска
Безопасный fixture: локальная двумерная сетка 3x3 со scroll-snap-type: both mandatory и раздельно помеченными block/inline targets. До canary фиксируются writing-mode, scrollLeft, scrollTop, target rect, snap labels и координаты после layout change. Каждое поле получает expected, observed, время и отметку валидности, а итоговый рабочий артефакт — карта «до layout → конфликтующие targets → финальные offsets → выбранная ось». Стенд использует только синтетические данные: не сохраняются IP, cookie, токены, Authorization, полные приватные URL, реальные логи, имена профилей, локальные пути и пользовательское содержимое. Если обязательное наблюдение нельзя снять без таких данных, проверку прекращают. Нельзя заменять отсутствующее значение догадкой или добавлять вторую мутацию ради красивого результата.
Отрицательный контроль
Контроль строится независимо от основной гипотезы: одномерный scroller с теми же block-axis координатами без inline-конфликта. Он должен быть готов до воздействия и отличаться только проверяемым механизмом. Если контроль тоже меняется, результат main-fixture получает статус invalid, потому что возможны общая среда, renderer, cache или тестовая обвязка. Отдельно проверяется риск «обычная инерция прокрутки вместо алгоритма re-snap после layout»: его признак записывают рядом с основным, не смешивая строки. Такой дизайн не доказывает массовость, зато позволяет опровергнуть слишком широкое объяснение и не отправлять команде ложноположительный баг-репорт.
Безопасная последовательность проверки
Единственное воздействие: изменить только размер центральной ячейки после исходного snap и дождаться scrollend, затем вернуть размер. Сначала снимается baseline, затем выполняется только это действие, после заранее выбранного settle-события записываются writing-mode, scrollLeft, scrollTop, target rect, snap labels и координаты после layout change, после чего выполняется полный rollback и повтор baseline. Успех узкой проверки означает: при конфликте повторный snap выбирает помеченную block-axis цель, а контроль подтверждает исходную вертикальную геометрию. Никаких изменений production, чужих страниц, реальных аккаунтов или сетевой маршрутизации процедура не требует. Если rollback не возвращает исходное состояние, прогон помечается invalid даже при убедительном скриншоте; следующий эксперимент начинают только после чистого восстановления.
Артефакт решения и красная линия
Решение оформляется через карта «до layout → конфликтующие targets → финальные offsets → выбранная ось». PASS допустим только когда выполнено условие «при конфликте повторный snap выбирает помеченную block-axis цель, а контроль подтверждает исходную вертикальную геометрию» и независимый контроль остаётся валиден. NOT REPRODUCED означает лишь отсутствие симптома на этом fixture, а не отсутствие проблемы у всех. Stop-line: остановиться, если пользовательский ввод продолжается, smooth scrolling не завершён или writing-mode не записан. Для handoff достаточно версии TP 251, минимального кода, обезличенных значений «writing-mode, scrollLeft, scrollTop, target rect, snap labels и координаты после layout change», результатов контроля, статуса rollback и ссылки на 318343@main. Материал не обещает индексацию, позиции, универсальную поддержку, стабильный релиз или автоматическое исправление проекта.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318343@main, техническая граница, контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318343@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.