> Как реализовать анимацию блока с подпрыгиванием, изменением цвета и улетом за пределы экрана (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: MTS
Стек: JavaScript
> Пример ответа
Для реализации такой анимации можно использовать CSS-анимации с ключевыми кадрами (@keyframes) и JavaScript для запуска последовательности. Вот пример:
HTML<div id="block" class="block">Анимируемый блок</div><button onclick="startAnimation()">Запустить</button>
CSS.block {width: 100px;height: 100px;background: blue;position: absolute;left: 50%;top: 50%;transform: translate(-50%, -50%);transition: background 0.3s;}@keyframes bounce {0%, 100% { transform: translate(-50%, -50%) translateY(0); }50% { transform: translate(-50%, -50%) translateY(-50px); }}@keyframes flyAway {0% { opacity: 1; transform: translate(-50%, -50%) scale(1); }100% { opacity: 0; transform: translate(200px, -200px) scale(0.5); }}
JAVASCRIPTfunction startAnimation() {const block = document.getElementById('block');// Шаг 1: подпрыгиваниеblock.style.animation = 'bounce 0.6s ease-in-out 2';// Шаг 2: изменение цвета после подпрыгиванияsetTimeout(() => {block.style.background = 'red';}, 1200); // 0.6s * 2 = 1.2s// Шаг 3: улет за экранsetTimeout(() => {block.style.animation = 'flyAway 1s ease-in forwards';}, 1800); // 1.2s + 0.6s задержки}
Пояснение:
-
bounce- анимация подпрыгивания с двумя циклами (черезanimation). -
Изменение цвета выполняется через
setTimeoutпосле завершения подпрыгивания. -
flyAway- анимация улёта с увеличением прозрачности и смещением. -
forwardsв последней анимации фиксирует конечное состояние (блок исчезает).
Для более плавного управления можно использовать requestAnimationFrame или библиотеки вроде GSAP, но данный подход прост и не требует зависимостей.
> Похожие задачи по frontend
Как получить ключ элемента в JavaScript
Как добавить элемент в массив с помощью метода push в JavaScript
Что выбрать для анимации: CSS или JavaScript библиотеку и почему
Что такое reactive и ref во Vue Composition API, для чего они нужны и чем отличаются?
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью