CSS свойства, связанные с анимацией
В этой статье объясняются свойства CSS, связанные с анимацией.
Вы сможете узнать об использовании и синтаксисе свойств @keyframes
, animation
и transition
.
YouTube Video
HTML для предварительного просмотра
css-animation.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-animation.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Animation</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Animation Related Properties</h2>
20 </header>
21 <article>
22 <h3>@keyframes</h3>
23 <section>
24 <h4>Animation Examples</h4>
25 <header><h4>animation: slide 3s ease infinite</h4></header>
26 <section class="sample-view">
27 <div class="box-animation-slide">Slide Box</div>
28 </section>
29 <header><h4>animation: color-change 3s ease infinite</h4></header>
30 <section class="sample-view">
31 <div class="box-animation-color-change">Color Change Box</div>
32 </section>
33 <header><h4>animation: fade 3s ease infinite</h4></header>
34 <section class="sample-view">
35 <div class="box-animation-fade">Fade Box</div>
36 </section>
37 </section>
38 </article>
39 <article>
40 <h3>animation</h3>
41 <section>
42 <h4>Animation Examples</h4>
43 <header><h4>animation: slide 3s ease-in-out infinite</h4></header>
44 <section class="sample-view">
45 <div class="box-animation-ease-in-out">Slide Box</div>
46 </section>
47 <header><h4>animation: color-change 3s ease-in-out 1s 3 alternate</h4></header>
48 <section class="sample-view">
49 <div class="box-animation-alternate">Color Change Box</div>
50 </section>
51 </section>
52 </article>
53 <article>
54 <h3>transition</h3>
55 <section>
56 <h4>Transition Examples</h4>
57 <header><h4>transition: background-color 2s ease</h4></header>
58 <section class="sample-view">
59 <div class="transition-box">Hover me!</div>
60 </section>
61 <header><h4>transition: background-color 5s ease, width 0.5s ease-in</h4></header>
62 <section class="sample-view">
63 <div class="transition-2-properties">Hover me!</div>
64 </section>
65 </section>
66 </article>
67 </main>
68</body>
69</html>
Анимация и переход
Правило @keyframes
1/* Animation definition */
2@keyframes slide {
3 0% {
4 transform: translateX(0);
5 }
6 50% {
7 transform: translateX(200px);
8 }
9 100% {
10 transform: translateX(0);
11 }
12}
13
14/* Apply the animation */
15.box-animation-slide {
16 width: 100px;
17 height: 100px;
18 background-color: skyblue;
19 animation: slide 3s ease infinite;
20}
Правило @keyframes
используется в CSS-анимациях для указания того, как стили меняются во время анимации. В @keyframes
изменения стиля от начала до конца анимации указываются в виде процентов времени или ключевых слов (from
и to
).
- Это пример анимации, где элемент перемещается слева направо и возвращается в исходное положение.
- В этом примере после
@keyframes
написаноslide
, что определяет анимацию с именемslide
. 0%
— начало анимации, при этомtranslateX(0)
устанавливает элемент в его исходное положение.50%
— середина анимации, где элемент перемещается на 200 пикселей вправо с использованиемtranslateX(200px)
.100%
— конец анимации, когда элемент возвращается в исходное положение.- В классе
box-animation-slide
свойствоanimation
используется для применения анимацииslide
с интервалом 3 секунды.
1@keyframes color-change {
2 0% {
3 background-color: red;
4 }
5 25% {
6 background-color: blue;
7 }
8 50% {
9 background-color: green;
10 }
11 75% {
12 background-color: yellow;
13 }
14 100% {
15 background-color: red;
16 }
17}
18
19.box-animation-color-change {
20 width: 100px;
21 height: 100px;
22 background-color: skyblue;
23 animation: color-change 3s ease infinite;
24}
- Вы можете точно контролировать стили во время анимации. Указав проценты, вы можете применять различные стили в произвольное время.
- В этом примере цвет постепенно изменяется с красного на синий, затем на зеленый, желтый и снова на красный.
1@keyframes fade {
2 from {
3 opacity: 0;
4 }
5 to {
6 opacity: 1;
7 }
8}
9
10.box-animation-fade {
11 width: 100px;
12 height: 100px;
13 background-color: blue;
14 animation: fade 3s ease infinite;
15}
- В этом примере
from
эквивалентно0%
, аto
эквивалентно100%
. Это позволяет создавать простые анимации.
Базовый синтаксис
1@keyframes animation-name {
2 0% {
3 /* Style at the start */
4 }
5 50% {
6 /* Style at the midpoint */
7 }
8 100% {
9 /* Style at the end */
10 }
11}
animation-name
: Название анимации. Это указывается с помощью свойстваanimation
или свойстваanimation-name
.- Процент или ключевые слова: Используйте проценты от
0%
до100%
или ключевые словаfrom
(эквивалентно0%
) иto
(эквивалентно100%
).
Свойство animation
1.box-animation-ease-in-out {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 animation: slide 3s ease-in-out infinite;
6}
Свойство animation
используется для применения анимаций к элементу. Анимации определяют, как набор стилей CSS изменяется со временем. С помощью свойства animation
вы можете управлять временем, поведением, задержкой, количеством повторений и другими параметрами анимации.
- Класс
box-animation-ease-in-out
задаетslide
какanimation-name
и использует анимациюslide
, определенную в@keyframes
.3s
— этоanimation-duration
, означающее, что каждый цикл анимации завершается за 3 секунды.ease-in-out
— этоanimation-timing-function
, которая заставляет анимацию начинаться медленно, ускоряться, а затем снова замедляться в конце.infinite
— этоanimation-iteration-count
, означающее, что анимация будет повторяться бесконечно.
1.box-animation-alternate {
2 width: 100px;
3 height: 100px;
4 background-color: skyblue;
5 animation: color-change 3s ease-in-out 1s 3 alternate;
6}
- Класс
box-animation-alternate
задаетcolor-change
какanimation-name
и использует анимациюcolor-change
, определенную в@keyframes
.1s
послеease-in-out
— этоanimation-delay
, задающая задержку перед началом анимации. Анимация начнется через 1 секунду.3
после1s
— этоanimation-iteration-count
, означающее, что анимация повторится 3 раза.alternate
— этоanimation-direction
, задающее направление воспроизведения анимации.alternate
определяет, что анимация воспроизводится чередующимся образом.
Составные части свойства animation
.
Свойство animation
— это сокращенное свойство, которое объединяет несколько под-свойств в одно. Вот основные под-свойства:.
- Свойство
animation-name
: задает имя анимации для применения. Оно должно совпадать с именем анимации, определенным в@keyframes
. - Свойство
animation-duration
: задает время, за которое анимация завершает один цикл. Единицы измерения времени — секунды (s
) или миллисекунды (ms
). - Свойство
animation-timing-function
: задает кривую скорости анимации. Используются такие значения, какease
,linear
,ease-in
,ease-out
,ease-in-out
и другие.- Задание значения
ease
заставляет анимацию начинаться медленно, ускоряться, а затем снова замедляться в конце. - Задание значения
linear
заставляет анимацию воспроизводиться с постоянной скоростью от начала до конца. - Указание
ease-in
начинается с медленного темпа и заканчивается быстро. - Указание
ease-out
начинается с быстрого темпа и заканчивается медленно. - Указание
ease-in-out
начинается медленно, ускоряется и заканчивается медленно.
- Задание значения
- Свойство
animation-delay
задает задержку перед началом анимации. Единицей времени являются либо секунды, либо миллисекунды. - Свойство
animation-iteration-count
определяет количество повторений анимации. Значениеinfinite
будет повторять анимацию бесконечно. - Свойство
animation-direction
задает направление воспроизведения анимации. Варианты включаютnormal
(вперед),reverse
(назад),alternate
(чередование направления) иalternate-reverse
(чередование, начиная с обратного направления). - Свойство
animation-fill-mode
определяет состояние анимации до ее начала и после завершения. Можно указатьnone
(нет),forwards
(вперед),backwards
(назад) илиboth
(оба). - Свойство
animation-play-state
определяет, включена ли анимация или приостановлена. Можно указатьrunning
(выполняется) илиpaused
(приостановлена).
Резюме
Свойство animation
является мощным инструментом для динамического изменения стиля элементов. С помощью @keyframes
можно определить изменение стилей во времени и управлять детальным поведением анимации через каждое подспецифицированное свойство animation
.
Свойство transition
1.transition-box {
2 background-color: lightgray;
3 transition: background-color 2s ease;
4}
5
6.transition-box:hover {
7 background-color: steelblue;
8}
9
10.transition-2-properties {
11 background-color: lightgray;
12 width: 150px;
13 height: 50px;
14 transition: background-color 5s ease, width 0.5s ease-in;
15}
16
17.transition-2-properties:hover {
18 background-color: blue;
19 width: 250px;
20}
Свойство transition
используется для добавления анимационных эффектов к изменениям CSS-стилей. Оно позволяет изменениям быть плавными при изменении состояний, таких как hover
, focus
, active
, или при динамическом изменении стилей с помощью JavaScript.
Рассмотрим пример класса transition-box
, где цвет фона плавно изменяется при наведении мыши на кнопку.
- В классе transition-box
свойство transition
задает двухсекундный переход для изменения цвета фона. Этот переход задан как ease
, делая его плавным.
- Псевдокласс hover
изменяет цвет фона с lightgray
на steelblue
при наведении мыши на кнопку. Это изменение происходит плавно за 2 секунды, указанные в классе transition-box
.
Можно применить свойство transition
к нескольким характеристикам одновременно.
- В примере класса transition-2-properties
цвет фона изменяется за 5 секунд, а ширина — за 0,5 секунды.
Базовый синтаксис
1/* Basic syntax of transition */
2transition: property duration timing-function delay;
property
указывает, к каким CSS-свойствам должна быть применена анимация. Использованиеall
применяет анимацию ко всем свойствам.duration
указывает время, необходимое для завершения анимации. Укажите с использованием секунд (s
) или миллисекунд (ms
).timing-function
указывает изменение скорости анимации. Вы можете использовать такие варианты, какease
,linear
,ease-in
,ease-out
,ease-in-out
и другие.delay
задает время задержки перед началом анимации. Укажите в секундах или миллисекундах.
Подробные свойства transition
1/* Detailed properties of transition */
2transition-property: background-color;
3transition-duration: 0.3s;
4transition-timing-function: ease;
5transition-delay: 500ms;
transition
также может использоваться в виде отдельных свойств следующим образом.
transition-property
: Указывает свойство, к которому применяется анимация.transition-duration
: Указывает продолжительность анимации до её завершения.transition-timing-function
: Указывает скорость изменения анимации. Можно использовать такие варианты, какease
,linear
,ease-in
,ease-out
,ease-in-out
.transition-delay
: Указывает время задержки перед началом анимации.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.