Safari Technology Preview 251: margin-trim удалён из flex-контейнеров. Локальная диагностика: карта миграции «тип контейнера → computed rule → крайний margin → безопасная замена»; одно обратимое воздействие, независимый контроль, privacy-stop и пакет для разработчика без реальных данных.
Что не смешивать с соседними ошибками
Запрос «как проверить удаление margin-trim у flex-контейнера в Safari Technology Preview 251» отвечает на одну самостоятельную боль: краевые отступы flex-элементов снова участвуют в размере контейнера после отказа движка от прежнего нестандартного поведения. Узкий ожидаемый ответ здесь не равен обещанию исправления на любом сайте: нужно различить статус reproduced, not reproduced, unsupported, environment-blocked и unknown на одном фиксированном стенде. Главный соседний эффект, который обязан быть отделён, — сравнение flex margin с обычным схлопыванием margin у block. Поэтому до любого действия записывают наблюдение словами, а не диагнозом, и заранее задают успешный исход: flex и block классифицируются раздельно, а изменение внешней геометрии не маскируется ручным обнулением margin у детей. Если результат не повторяется после rollback, первая попытка не считается доказательством.
Свежесть и предел первичного источника
Официальные Release Notes WebKit датированы 26 августа 2026 года и относят пункт к Safari Technology Preview 251: поддержка margin-trim удалена для flex-контейнеров согласно решению CSSWG ограничить её block и multi-column контейнерами. Прямая первичная запись — 318654@main. Эта пара источников подтверждает наличие и техническую границу change item, но не подтверждает частоту жалоб, поисковый спрос, результат на конкретном устройстве, перенос в stable Safari или причину любого внешне похожего сбоя. Публичная ветка о релизе служит только свежим community lead; её комментарии и поисковый сниппет не используются как evidence. Вывод статьи ограничен указанной функцией и локальным воспроизведением.
Карта наблюдений
Безопасный fixture: локальная колонка flex с двумя элементами, явными внешними отступами и отдельным block-контролем. До canary фиксируются display контейнера, указанное и computed значение margin-trim, внешняя высота, отступы первого и последнего ребёнка. Каждое поле получает expected, observed, время и отметку валидности, а итоговый рабочий артефакт — карта миграции «тип контейнера → computed rule → крайний margin → безопасная замена». Стенд использует только синтетические данные: не сохраняются IP, cookie, токены, Authorization, полные приватные URL, реальные логи, имена профилей, локальные пути и пользовательское содержимое. Если обязательное наблюдение нельзя снять без таких данных, проверку прекращают. Нельзя заменять отсутствующее значение догадкой или добавлять вторую мутацию ради красивого результата.
Контроль, который может опровергнуть гипотезу
Контроль строится независимо от основной гипотезы: block-контейнер с теми же детьми, где область применения margin-trim проверяется отдельно. Он должен быть готов до воздействия и отличаться только проверяемым механизмом. Если контроль тоже меняется, результат main-fixture получает статус invalid, потому что возможны общая среда, renderer, cache или тестовая обвязка. Отдельно проверяется риск «сравнение flex margin с обычным схлопыванием margin у block»: его признак записывают рядом с основным, не смешивая строки. Такой дизайн не доказывает массовость, зато позволяет опровергнуть слишком широкое объяснение и не отправлять команде ложноположительный баг-репорт.
Rollback после одного воздействия
Единственное воздействие: переключить только display тестового контейнера между flex и block, затем восстановить flex. Сначала снимается baseline, затем выполняется только это действие, после заранее выбранного settle-события записываются display контейнера, указанное и computed значение margin-trim, внешняя высота, отступы первого и последнего ребёнка, после чего выполняется полный rollback и повтор baseline. Успех узкой проверки означает: flex и block классифицируются раздельно, а изменение внешней геометрии не маскируется ручным обнулением margin у детей. Никаких изменений production, чужих страниц, реальных аккаунтов или сетевой маршрутизации процедура не требует. Если rollback не возвращает исходное состояние, прогон помечается invalid даже при убедительном скриншоте; следующий эксперимент начинают только после чистого восстановления.
Классификация исхода
Решение оформляется через карта миграции «тип контейнера → computed rule → крайний margin → безопасная замена». PASS допустим только когда выполнено условие «flex и block классифицируются раздельно, а изменение внешней геометрии не маскируется ручным обнулением margin у детей» и независимый контроль остаётся валиден. NOT REPRODUCED означает лишь отсутствие симптома на этом fixture, а не отсутствие проблемы у всех. Stop-line: остановиться, если в тест одновременно добавлены gap, padding, margin-collapse или другое правило раскладки. Для handoff достаточно версии TP 251, минимального кода, обезличенных значений «display контейнера, указанное и computed значение margin-trim, внешняя высота, отступы первого и последнего ребёнка», результатов контроля, статуса rollback и ссылки на 318654@main. Материал не обещает индексацию, позиции, универсальную поддержку, стабильный релиз или автоматическое исправление проекта.
Материал подготовлен редакцией VOne с помощью ИИ; дата, WebKit Release 251, primary commit 318654@main, техническая граница, контроль, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318654@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.