TGViewer
Логово верстальщика Логово верстальщика @webdevlair · 7.96K subscribers
Post #4377 557
⁣Больше никаких черных ящиков: transition-behavior: allow-discrete -- анимируем display по-взрослому

Долгое время display: none оставался черным ящиком для CSS-анимаций, заставляя верстальщиков городить костыли из visibility, opacity, max-height и JS-классов. В production это особенно болезненно в UI-компонентах: модальных окнах, дропдаунах и тултипах, где внезапное исчезновение элемента ломает восприятие и UX.

Что меняет transition-behavior: allow-discrete
Ключевое слово, которое легально включает анимацию для дискретных свойств, в первую очередь display. Теперь можно анимировать переход между display: block и display: none с помощью обычных transition без фреймворков или хаков. Браузер запоминает начальное состояние и применяет transition перед скрытием элемента.

Ключевой нюанс: @starting-style
Для анимации появления из none обязательно нужен блок @starting-style, задающий начальные значения. Без него анимация не сработает. Пример для меню:
.menu {
transition: opacity 0.3s ease, display 0.3s allow-discrete;
display: block; opacity: 1;
}
.menu--hidden {
display: none; opacity: 0;
}
@starting-style {
.menu--hidden { opacity: 0; display: none; }
}


Производственные сценарии и типичная ошибка
Свойство особенно критично для компонентов с адаптивным поведением, например, мобильного меню или выпадающих фильтров. Типичная ошибка -- забыть указать transition для всех свойств в паре, что приводит к мгновенному скрытию без анимации. Всегда проверяй, что display и animatable-свойства (opacity, transform) объявлены в transition вместе.

Вывод: transition-behavior: allow-discrete и @starting-style превращают скрытие и показ элементов из черного ящика в предсказуемый CSS-паттерн, снижая зависимость от JS и уменьшая визуальную регрессию в интерфейсах.
  • 👍 2
  • 👎 1
More from @webdevlair
  1. Sep 27, 2026Бумага и ручка: стартап заставил соискателей писать сопроводительные вручную Стартап Dumb…
  2. Sep 27, 2026Post #4644
  3. Sep 27, 2026Сигналы добрались до React-Redux В React Status #492 — React-Redux 9.4 Alpha притащил опци…
  4. Sep 27, 2026Post #4642
  5. Sep 26, 2026500+ баксов в месяц за ChatGPT? Не, у нас столько не завалялось Запуска пока нет. Но новый…
  6. Sep 26, 2026Post #4640
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →