Propriedades CSS Relacionadas à Animação
Este artigo explica as propriedades CSS relacionadas à animação.
Você pode aprender sobre o uso e a sintaxe das propriedades @keyframes
, animation
e transition
.
YouTube Video
HTML para Visualização
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>
Animação e Transição
Regra @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
é usado em animações CSS para especificar como os estilos mudam durante a animação. No @keyframes
, as mudanças de estilo do início ao fim da animação são especificadas por porcentagens de tempo ou palavras-chave (from
e to
).
- Este é um exemplo de uma animação em que um elemento desliza da esquerda para a direita e retorna à sua posição original.
- Neste exemplo,
slide
é escrito após@keyframes
, definindo uma animação chamadaslide
. 0%
é o início da animação, comtranslateX(0)
posicionando o elemento em sua localização original.50%
é o meio da animação, onde o elemento se move 200px para a direita usandotranslateX(200px)
.100%
é o fim da animação, com o elemento retornando à sua posição original.- Na classe
box-animation-slide
, a propriedadeanimation
é usada para aplicar a animaçãoslide
em intervalos de 3 segundos.
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}
- Você pode controlar detalhadamente os estilos durante uma animação. Ao especificar porcentagens, você pode aplicar diferentes estilos em momentos arbitrários.
- Neste exemplo, a cor muda gradualmente de vermelho para azul, depois para verde, depois para amarelo e volta para vermelho.
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}
- Neste exemplo,
from
é equivalente a0%
eto
é equivalente a100%
. Isso permite que você defina animações simples.
Sintaxe Básica
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
: O nome da animação. Isso é especificado usando a propriedadeanimation
ou a propriedadeanimation-name
.- Porcentagens ou Palavras-chave: Use porcentagens de
0%
a100%
, ou as palavras-chavefrom
(equivalente a0%
) eto
(equivalente a100%
).
Propriedade 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}
A propriedade animation
é usada para aplicar animações a um elemento. As animações definem como um conjunto de estilos CSS muda ao longo do tempo. Com a propriedade animation
, você pode controlar o tempo, comportamento, atraso, número de repetições e mais de uma animação.
- A classe
box-animation-ease-in-out
especificaslide
como oanimation-name
e usa a animaçãoslide
definida em@keyframes
.3s
é aanimation-duration
, o que significa que cada ciclo da animação se completa em 3 segundos.ease-in-out
é aanimation-timing-function
, o que faz com que a animação comece lentamente, acelere e depois desacelere novamente no final.infinite
é oanimation-iteration-count
, o que significa que a animação se repetirá indefinidamente.
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}
- A classe
box-animation-alternate
especificacolor-change
como oanimation-name
e usa a animaçãocolor-change
definida em@keyframes
.1s
apósease-in-out
é oanimation-delay
, especificando o atraso antes do início da animação. A animação começará 1 segundo depois.3
após1s
é oanimation-iteration-count
, o que significa que a animação se repete 3 vezes.alternate
é aanimation-direction
, especificando a direção da reprodução da animação. Oalternate
especifica que a animação reproduz alternadamente.
Composição da Propriedade animation
.
A propriedade animation
é uma propriedade abreviada que combina várias subpropriedades em uma só. Aqui estão as principais subpropriedades:.
- Propriedade
animation-name
: Especifica o nome da animação a ser aplicada. Ele deve corresponder ao nome da animação definida em@keyframes
. - Propriedade
animation-duration
: Especifica o tempo necessário para a animação completar um ciclo. As unidades de tempo são segundos (s
) ou milissegundos (ms
). - Propriedade
animation-timing-function
: Especifica a curva de velocidade da animação. Valores comoease
,linear
,ease-in
,ease-out
,ease-in-out
, etc., são usados.- Especificar
ease
faz com que a animação comece lentamente, acelere e depois desacelere novamente no final. - Especificar
linear
faz com que a animação progrida a uma velocidade constante do início ao fim. - Especificar
ease-in
inicia a animação lentamente e termina rapidamente. - Especificar
ease-out
inicia a animação rapidamente e termina lentamente. - Especificar
ease-in-out
inicia lentamente, progride rapidamente e termina lentamente.
- Especificar
- A propriedade
animation-delay
especifica o atraso antes do início da animação. A unidade de tempo pode ser segundos ou milissegundos. - A propriedade
animation-iteration-count
especifica o número de vezes que a animação deve se repetir. Especificarinfinite
fará com que a animação se repita indefinidamente. - A propriedade
animation-direction
especifica a direção da reprodução da animação. As opções incluemnormal
(direção normal),reverse
(direção reversa),alternate
(reproduzir alternadamente) ealternate-reverse
(reproduzir alternadamente começando na direção reversa). - A propriedade
animation-fill-mode
especifica o estado da animação antes de começar e depois de terminar. Você pode especificarnone
,forwards
,backwards
ouboth
. - A propriedade
animation-play-state
especifica se a animação está em execução ou pausada. Você pode especificarrunning
oupaused
.
Resumo
A propriedade animation
é uma ferramenta poderosa para alterar dinamicamente o estilo dos elementos. Usando @keyframes
, você pode definir como os estilos mudam ao longo do tempo e controlar o comportamento detalhado da animação com cada subpropriedade de animation
.
Propriedade 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}
A propriedade transition
é usada para aplicar efeitos de animação às alterações de estilo CSS. Ela permite que as alterações apareçam suavemente durante mudanças de estado, como hover
, focus
, active
ou quando estilos são alterados dinamicamente por JavaScript.
Vamos examinar um exemplo da classe transition-box
em que a cor de fundo muda suavemente ao passar o mouse sobre um botão.
- Na classe transition-box
, a propriedade transition
aplica uma transição de 2 segundos à mudança de cor de fundo. A mudança é especificada como ease
, tornando-a suave.
- A pseudo-classe hover
muda a cor de fundo de lightgray
para steelblue
quando o mouse passa sobre o botão. Essa mudança ocorre suavemente ao longo dos 2 segundos especificados na classe transition-box
.
É possível aplicar transition
a várias propriedades simultaneamente.
- No exemplo da classe transition-2-properties
, a cor de fundo muda em 5 segundos e a largura muda em 0,5 segundos.
Sintaxe Básica
1/* Basic syntax of transition */
2transition: property duration timing-function delay;
- A propriedade
property
especifica a quais propriedades CSS a animação deve ser aplicada. Especificarall
aplica a animação a todas as propriedades. - A propriedade
duration
especifica o tempo que a animação leva para ser concluída. Especifique usando segundos (s
) ou milissegundos (ms
). - A propriedade
timing-function
especifica a mudança na velocidade da animação. Você pode usar opções comoease
,linear
,ease-in
,ease-out
,ease-in-out
, etc. - A propriedade
delay
especifica o tempo de atraso antes do início da animação. Especifique em segundos ou milissegundos.
Propriedades detalhadas de transition
1/* Detailed properties of transition */
2transition-property: background-color;
3transition-duration: 0.3s;
4transition-timing-function: ease;
5transition-delay: 500ms;
A propriedade transition
também pode ser usada como propriedades individuais, da seguinte forma.
transition-property
: Especifica a propriedade à qual a animação será aplicada.transition-duration
: Especifica o tempo até a animação ser concluída.transition-timing-function
: Especifica a velocidade de progressão da animação. Podem ser usadas opções comoease
,linear
,ease-in
,ease-out
,ease-in-out
.transition-delay
: Especifica o tempo de atraso antes do início da animação.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.