01:07
Урок 29: Анимации в JavaScript

Курс по программированию на JavaScript

Урок 29: Анимации в JavaScript

Анимации являются важной частью современных веб-приложений, делая их более интерактивными и привлекательными для пользователей. В этом уроке мы рассмотрим, как использовать CSS-анимации в JavaScript, а также основы работы с Canvas API для создания графики и анимаций.

Использование CSS-анимаций в JavaScript

CSS-анимации могут быть управляемы и инициированы с помощью JavaScript. Это позволяет создавать более сложные и интерактивные анимации, комбинируя возможности CSS и JavaScript.

Пример CSS-анимации, управляемой JavaScript

Рассмотрим пример, в котором анимация запускается при нажатии на кнопку.

// HTML
<style>
@keyframes slide {
 from { left: 0; }
 to { left: 100px; }
}

#animate {
 position: relative;
 width: 50px;
 height: 50px;
 background-color: red;
}
</style>

<div id="animate"></div>
<button id="startAnimation">Start Animation</button>

// JavaScript
document.getElementById('startAnimation').addEventListener('click', function() {
 let element = document.getElementById('animate');
 element.style.animation = 'slide 2s forwards';
});
// При нажатии на кнопку элемент будет анимирован

В этом примере при нажатии на кнопку элемент начинает анимацию перемещения с использованием CSS-анимаций, управляемых JavaScript.

Основы Canvas API

Canvas API предоставляет способ рисования графики на веб-странице. Canvas элемент представляет собой контейнер для графики, и с помощью JavaScript можно рисовать различные фигуры, изображения и анимации.

Пример рисования на Canvas

Рассмотрим простой пример рисования прямоугольника на Canvas.

// HTML
<canvas id="myCanvas" width="200" height="200" style="border:1px solid #000000;"></canvas>

// JavaScript
let canvas = document.getElementById('myCanvas');
let context = canvas.getContext('2d');
context.fillStyle = '#FF0000';
context.fillRect(50, 50, 100, 100);
// Красный прямоугольник будет нарисован на Canvas

В этом примере мы используем Canvas API для рисования красного прямоугольника на холсте.

Пример анимации на Canvas

Рассмотрим пример создания анимации перемещения круга по Canvas.

// HTML
<canvas id="myCanvas" width="400" height="400" style="border:1px solid #000000;"></canvas>

// JavaScript
let canvas = document.getElementById('myCanvas');
let context = canvas.getContext('2d');
let x = 50;
let y = 50;
let dx = 2;
let dy = 2;

function drawCircle() {
 context.clearRect(0, 0, canvas.width, canvas.height);
 context.beginPath();
 context.arc(x, y, 20, 0, Math.PI * 2);
 context.fillStyle = '#FF0000';
 context.fill();
 context.closePath();
 x += dx;
 y += dy;

 if (x + dx > canvas.width - 20 || x + dx < 20) {
 dx = -dx;
 }
 if (y + dy > canvas.height - 20 || y + dy < 20) {
 dy = -dy;
 }

 requestAnimationFrame(drawCircle);
}

drawCircle();
// Красный круг будет перемещаться по Canvas

В этом примере создается анимация перемещения красного круга по холсту с использованием Canvas API.

Упражнения

Упражнение 1: Анимация элемента

Создайте HTML-документ с элементом <div id="box"></div> и кнопкой <button id="animateBox">Animate Box</button>. Используйте CSS-анимацию и JavaScript для перемещения элемента <div> вправо при нажатии на кнопку.

Решение:

// HTML
<style>
@keyframes moveRight {
 from { left: 0; }
 to { left: 200px; }
}

#box {
 position: relative;
 width: 50px;
 height: 50px;
 background-color: blue;
}
</style>

<div id="box"></div>
<button id="animateBox">Animate Box</button>

// JavaScript
document.getElementById('animateBox').addEventListener('click', function() {
 let box = document.getElementById('box');
 box.style.animation = 'moveRight 2s forwards';
});
// При нажатии на кнопку элемент переместится вправо

Объяснение: Мы создали HTML-документ с элементом <div> и кнопкой, добавили CSS-анимацию для перемещения элемента вправо и использовали JavaScript для запуска анимации при нажатии на кнопку.

Упражнение 2: Анимация круга на Canvas

Создайте HTML-документ с элементом <canvas id="circleCanvas" width="400" height="400"></canvas>. Используйте Canvas API для создания анимации перемещения круга по диагонали холста.

Решение:

// HTML
<canvas id="circleCanvas" width="400" height="400" style="border:1px solid #000000;"></canvas>

// JavaScript
let canvas = document.getElementById('circleCanvas');
let context = canvas.getContext('2d');
let x = 50;
let y = 50;
let dx = 3;
let dy = 3;

function drawCircle() {
 context.clearRect(0, 0, canvas.width, canvas.height);
 context.beginPath();
 context.arc(x, y, 20, 0, Math.PI * 2);
 context.fillStyle = 'blue';
 context.fill();
 context.closePath();
 x += dx;
 y += dy;

 if (x + dx > canvas.width - 20 || x + dx < 20) {
 dx = -dx;
 }
 if (y + dy > canvas.height - 20 || y + dy < 20) {
 dy = -dy;
 }

 requestAnimationFrame(drawCircle);
}

drawCircle();
// Синий круг будет перемещаться по диагонали холста

Объяснение: Мы создали HTML-документ с элементом <canvas> и использовали Canvas API для создания анимации перемещения круга по диагонали холста.

Категория: JavaScript | Просмотров: 73 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: