Переходы (transitions) в CSS
Тень блока дала вам спокойную глубину. Переходы дают спокойное изменение во времени: кнопка смягчает фон при наведении, карточка чуть приподнимается в фокусе, цвет ссылки плавно меняется, а не щёлкает. Вы по-прежнему пишете два состояния — браузер интерполирует между ними за заданную длительность.
Что такое переход
Переход сам не придумывает новый вид. Он следит за свойством, которое уже меняется (часто через :hover, :focus-visible или класс), и анимирует это изменение. Без перехода скачок мгновенный; с ним — короткий, читаемый «скользящий» ход.
Четыре длинных свойства: transition-property, transition-duration, transition-timing-function и transition-delay. В повседневной работе чаще всего хватает сокращения transition.
Свойство и длительность
Укажите, что можно анимировать, и сколько длится изменение. Длительности — это время (0.2s, 200ms). Короткие и осмысленные интервалы лучше театральных пауз — отклик UI часто живёт около 150ms–300ms.
.btn {
background: #2563eb;
color: #fff;
border: none;
padding: 0.75rem 1.25rem;
border-radius: 0.5rem;
transition-property: background-color, color;
transition-duration: 0.2s;
}
.btn:hover {
background: #1d4ed8;
color: #f8fafc;
}
Ставьте transition на базовое правило — тогда анимируются и вход, и выход из hover. Перечисляйте только нужные свойства, чтобы случайные layout-скачки не «плыли» полсекунды.
Timing и delay
transition-timing-function задаёт кривую скорости: ease (ощущение по умолчанию), linear, ease-in, ease-out, ease-in-out или свой cubic-bezier(...). transition-delay ждёт перед стартом изменения — полезно для ступенчатых меню, легко переборщить на одной кнопке.
.fade-panel {
opacity: 0.65;
transition: opacity 0.35s ease-out;
}
.fade-panel.is-bright {
opacity: 1;
}
.meter-bar {
width: 40%;
transition: width 0.4s linear;
}
.meter-bar.is-full {
width: 100%;
}
Ease-out часто естественен для появления UI. Linear подходит прогрессу, который должен читаться как ровный. Delay оставляйте для осмысленных последовательностей — а не чтобы каждый клик ощущался «с опозданием».
Сокращение и движение нескольких свойств
В сокращении обычно: property, duration, timing-function, delay. Несколько переходов можно перечислить через запятую. Сочетайте paint-friendly свойства — transform и opacity обычно плавнее, чем анимация width, height, top или margin.
.card-lift {
background: #fff;
border-radius: 0.75rem;
box-shadow: 0 0.25rem 0.75rem rgba(15, 23, 42, 0.08);
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
}
.card-lift:hover,
.card-lift:focus-visible {
transform: translateY(-0.25rem);
box-shadow: 0 0.75rem 1.5rem rgba(15, 23, 42, 0.14);
}
Здесь глубина из прошлого урока встречается с движением: тень и подъём делят один момент hover. Держите ход небольшим — страница должна ощущаться твёрдой.
Reduced motion и когда лучше анимации
Некоторым людям нужно меньше движения. Уважайте prefers-reduced-motion: reduce: сокращайте или отключайте несущественные переходы. Transitions сильны для смены состояний A → B. Зацикленные или многошаговые истории — это CSS Animations (@keyframes) позже в модуле — после Transforms.
Попробуйте сами
- Добавьте кнопке transition фона на
0.2sи наведите курсор — затем перенеситеtransitionс:hoverна базовое правило и сравните поведение при уходе с hover. - Анимируйте
opacityсease-outпри переключении класса панели; попробуйтеlinearи почувствуйте разницу. - Соедините
transform: translateY(...)с более мягкимbox-shadowна hover карточки (два свойства, один список в сокращении). - В DevTools эмулируйте
prefers-reduced-motion: reduceи убедитесь, что несущественное движение ослабевает. - В этом упражнении не анимируйте
heightдля открытого меню — оставьте эксперимент на более поздние паттерны.
Частые ошибки
- Писать
transition: all 1s, чтобы каждое свойство, включая layout, скользило целую секунду - Многосекундные длительности, из‑за которых UI кажется вялым
- Анимировать
width/top/margin, когда хватило быtransformилиopacity - Игнорировать
prefers-reduced-motion - Ждать, что transition будет крутиться вечно — это территория анимаций
Кратко
- Transitions сглаживают смену свойств между состояниями за заданную длительность
- Управляйте property, duration, timing-function и delay (или сокращением
transition) - Предпочитайте короткое движение на paint-friendly свойствах; ставьте transitions на базовое правило
- Уважайте предпочтения reduced-motion; для циклов и сложных последовательностей — keyframe-анимации
- Дальше в Effects & Motion: Transforms
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху