Блок, единственным содержимым которого является таблица, ведёт себя как self-collapsing и искажает вертикальные отступы соседей. Разбор Safari TP 251: самостоятельный диагностический артефакт, прямые источники, опровержимый контроль, обратимый canary, stop-line и privacy-safe handoff.
Ответ на запрос: Блок с таблицей ошибочно схлопывается в Safari TP 251
Сначала зафиксируйте, какой результат опровергнет гипотезу. Единственная пользовательская боль: блок, единственным содержимым которого является таблица, ведёт себя как self-collapsing и искажает вертикальные отступы соседей. Нормализованный intent этой страницы — «как проверить схлопывание блока с таблицей в Safari Technology Preview 251». Критерий, который можно опровергнуть: table-ветка имеет высоту содержимого и не повторяет геометрию действительно пустого control. Возможная ложная причина сформулирована отдельно: обычное margin collapsing пустого блока, ошибочно перенесённое на непустой блок с таблицей. До запуска выбирается такая развилка: table совпадает с empty-control — reproduced; совпадает с text-control — not reproduced; обе контроли плавают — invalid. Если нужная поверхность отсутствует, ставится `unsupported`; если нет обязательного наблюдения, ставится `unknown`; оба статуса отличаются от `not-reproduced`. Проверка выполняется на изолированном fixture, поэтому не затрагивает production, VPN, маршрутизацию, рабочий профиль, реальные аккаунты или личные данные. Вывод нельзя переносить на stable Safari, другой браузер либо чужой сайт без отдельного опыта.
Доказательная граница 318782@main@main
Сниппеты оставлены за пределами доказательной части. WebKit датирует Safari Technology Preview 251 26 августа 2026 года и перечисляет изменение: исправлена классификация блока с table-content как self-collapsing. Связанная primary-страница 318782@main@main была открыта 29 августа: identifier совпадает, commit title описывает тот же узкий механизм. Для темы «блок, единственным содержимым которого является таблица, ведёт себя как self-collapsing и искажает вертикальные отступы соседей» этого достаточно только чтобы подтвердить наличие change item и его инженерную границу. Release Notes и 318782@main@main не измеряют количество затронутых пользователей, не доказывают поисковый спрос, не сообщают результат для произвольного приложения и не гарантируют попадание в стабильную версию. Google News, Reddit и Apple search results были лидами к перепроверке даты; их заголовки и комментарии не использованы как техническое evidence.
Артефакт опыта: матрица `content kind × parent border × before/after margin → container height/offset`
Вместо общего чек-листа сохраните предметный артефакт. Здесь это матрица `content kind × parent border × before/after margin → container height/offset`. Локальный стенд: локальный документ с одинаковыми контейнерами: table, пустой div и обычный текстовый блок. Схема записи специфична для задачи: `caseId` — наблюдаемое значение или пусто с причиной; `contentKind` — наблюдаемое значение или пусто с причиной; `parentHeight` — наблюдаемое значение или пусто с причиной; `childHeight` — наблюдаемое значение или пусто с причиной; `topOffset` — наблюдаемое значение или пусто с причиной; `bottomOffset` — наблюдаемое значение или пусто с причиной; `marginBefore` — наблюдаемое значение или пусто с причиной; `marginAfter` — наблюдаемое значение или пусто с причиной. В строке 318782@main добавляются `expected`, `observed`, build, timestamp и единица, если она применима. Формула или источник каждого вычисленного значения указывается рядом; пропуск не превращается в ноль. IP, cookie, Authorization, токены, device labels, внешние URL, пути, сырые media и содержимое файлов исключаются до записи. Test-only идентификаторы разрешены в виде краткого hash внутри запуска и удаляются после cleanup. Именно набор «caseId, contentKind, parentHeight, childHeight, topOffset, bottomOffset, marginBefore, marginAfter» делает материал самостоятельным: он отвечает на боль «блок, единственным содержимым которого является таблица, ведёт себя как self-collapsing и искажает вертикальные отступы соседей», а не подставляет другое название в универсальный браузерный чек-лист.
Control и решение для 318782@main
Развилка решения фиксируется ещё на пустом стенде. Для 318782@main используется: параллельный контейнер с текстом той же высоты и отдельный действительно пустой блок. Он получает тот же build, порядок событий и поля «caseId, contentKind, parentHeight, childHeight, topOffset, bottomOffset, marginBefore, marginAfter». Проверяемый confounder — обычное margin collapsing пустого блока, ошибочно перенесённое на непустой блок с таблицей. Если основная ветка отклоняется, а control остаётся спокойным, применяется развилка «table совпадает с empty-control — reproduced; совпадает с text-control — not reproduced; обе контроли плавают — invalid». Если отклоняется control, итог `invalid`; если control технически недоступен, итог `environment-blocked`; если значения неполны, итог `inconclusive`. Нельзя объявлять дефект только потому, что фраза «блок, единственным содержимым которого является таблица, ведёт себя как self-collapsing и искажает вертикальные отступы соседей» похожа на сообщение форума. Сначала должны совпасть fixture, измеряемая поверхность и ожидаемый ответ «table-ветка имеет высоту содержимого и не повторяет геометрию действительно пустого control». Этот порядок запрещает объяснение задним числом и сохраняет различие между соседними API, layout и media change items.
Обратимый canary и критерий PASS
Сначала baseline, затем одно воздействие, затем cleanup. Для этой статьи действие сформулировано так: заменить таблицу на равновысокий обычный блок, измерить, затем вернуть table markup. Сначала заполняется baseline по полям «caseId, contentKind, parentHeight, childHeight, topOffset, bottomOffset, marginBefore, marginAfter», затем выполняется только указанная операция. После заранее выбранного settle-event те же поля читаются повторно без округления и подмены отсутствующих значений. PASS допустим лишь при условии: table-ветка имеет высоту содержимого и не повторяет геометрию действительно пустого control. Затем действие полностью откатывается, и baseline для артефакта «матрица `content kind × parent border × before/after margin → container height/offset`» должен восстановиться. Несовпадение rollback переводит запись в `invalid`, даже если основная ветка выглядела убедительно. Canary не расширяют на production, пользовательский media, рабочие разрешения, продолжительный стресс-тест или внешние страницы. Один run сохраняет свою строку; повтор не перезаписывает редкое отклонение.
Stop-line и privacy-safe handoff
Handoff оставляет только материал для повторения. Немедленная остановка: таблица использует `position:absolute`, контейнер имеет transform или данные загружаются асинхронно. Для повторения оставляют build, hash fixture, поля «caseId, contentKind, parentHeight, childHeight, topOffset, bottomOffset, marginBefore, marginAfter», expected/observed, control status, cleanup status и primary link 318782@main@main. Статус выбирается из `reproduced`, `not-reproduced`, `unsupported`, `environment-blocked`, `invalid`, `inconclusive`, `unknown`; отдельной строкой приводится развилка «table совпадает с empty-control — reproduced; совпадает с text-control — not reproduced; обе контроли плавают — invalid». Перед передачей удаляются пути, имена, адреса, labels и любые значения, способные идентифицировать пользователя либо инфраструктуру. Даже успешный handoff подтверждает только условие «table-ветка имеет высоту содержимого и не повторяет геометрию действительно пустого control» в этом fixture. Он не обещает автоматическое исправление, стабильную поддержку, индексацию, позицию, цитирование ИИ или доказанный спрос.
Материал подготовлен редакцией VOne с помощью ИИ; дата Release 251, primary 318782@main, техническая граница, самостоятельный артефакт, control, обратимость, privacy-stop и роль community lead постатейно проверены 29 августа 2026 года.
Источники и проверка
- WebKit — Release Notes for Safari Technology Preview 251 проверено 2026-08-29
- WebKit commit 318782@main проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.