Animações Com CSS
Animações Com CSS
Animações Com CSS
Vamos começar.
O que você precisa
entender antes de
estudar animações?
Antes de embarcar direto no mundo das animações, é bom
entender algumas coisas antes: os elementos em CSS não
são necessariamente estáticos. Existem estados de
elemento, isto é, eles podem estar apresentados de formas
diferentes em momentos diferentes.
:hover
A pseudo-classe :hover corresponde quando o usuário
designa um elemento com um dispositivo apontador, mas
não necessariamente o ativa. Este estilo pode ser substituído
por qualquer outra pseudo-classe de link-relacionados, isto é
:link, :visited, e :active, aparecendo em regras subsequentes.
Por exemplo, numa lista com três elementos li, você vai estar
acionando o primeiro.
:last-child
:nth-child()
::before
Mas como entender o que faz uma animação ser boa ou não?
Em vez de eu tentar criar uma análise a partir do meu
conhecimento, é melhor que eu mostre o que os gigantes da
área pensam nisso. Vou usar o livro Disney Animation: The
Illusion of Life como referência para explicar os 12 princípios
que a Disney aprimorou.
Antecipação (Anticipation):
Encenação (Staging):
Este princípio diz que você precisa apresentar uma ação de
forma clara para o espectador. A expressão precisa estar
clara, o movimento fluido e visível. Isso está relacionado,
muitas vezes, com o ângulo que você escolhe para mostrar o
que quer.
Temporização (Timing):
Exagero (Exaggeration):
O exagero é essencial para que se consiga uma boa
comunicação. Seus movimentos não precisam ser
necessariamente caricatos, ainda mais se não for seu estilo,
mas um exagero nos movimentos, por exemplo em “Squash &
Stretch”, no “Follow “Through” e nas “Secondary Actions” vai
deixar sua animação bem mais dinâmica e com uma
comunicação bem mais clara.
Desenho volumétrico (Solid Drawing):
Atração (Appeal):
Transforms:
transform: rotate(ângulo);
Rotaciona o elemento em sentido horário baseado no ângulo
mencionado.
transform: scaleX(sx);
Aumenta a escala do elemento no eixo horizontal.
transform: scaleY(sy);
Aumenta a escala do elemento no eixo vertical.
transform: skewX(angle);
Inclina o elemento de forma que suas laterais e bases formem
um determinado ângulo com o eixo X.
transform: skewY(angle);
Inclina o elemento de forma que suas laterais e bases formem
um determinado ângulo com o eixo Y.
transform: translateX(tx)
Desloca o elemento de sua posição atual até a posição
declarada no eixo horizontal.
transform: translateY(ty)
Desloca o elemento de sua posição atual até a posição
declarada no eixo vertical.
Transitions:
transition-property:
Aqui, nós definimos que propriedade(s) vamos aplicar o efeito
de transição. Você só precisa indicar o nome dela. Ou seja, se
quer mudar a cor de fundo do elemento, é só escrever
transition-property: background-color;
transition-duration:
Essa é bem simples, indica apenas a duração da nossa
transição. Uma transição de 3 segundos será escrita como
transition-duration: 3s. Se você quiser usar milissegundos,
você pode com a abreviação ms.
transition-timing-function:
Essa propriedade cuida do timing, em como a transição irá se
comportar dentro da nossa duração. Isto é, pode ser que ela
seja mais rápida no início e vá diminuindo a velocidade
conforme o tempo vai acabando. Esses tipos de declarações
são chamadas de easing.
ease;
A sua curva está no meio. Começa lento, fica mais rápido e
termina lento.
linear;
Significa que a animação seguirá uma linha, não terá
mudança na velocidade em nenhum momento.
ease-in;
Começa lento e termina rápido.
ease-out;
Começa rápido e termina lento.
ease-in-out;
Parecido com o ease, começa lento, continua rápido e
termina não tão lentamente assim. É um pouco mais
equilibrado, sua curva é menos acentuada.
transition-delay:
Essa propriedade vai adicionar um delay para o início da
transição. Se você mudar o estado do elemento sem um
delay, a mudança acontecerá imediatamente. Adicionando
um valor de delay, essa animação vai demorar um pouco a
acontecer.
Animations:
animation-direction
Configura se a animação deve ou não alternar a direção em
cada execução durante a sequência ou voltar ao ponto inicial
e se repetir.
animation-duration
Configura o tempo que uma animação deveria levar para
completar um ciclo.
animation-iteration-count
Configura o número de vezes que uma animação deveria se
repetir; você pode especificar infinito para repetir a animação
indefinidamente.
animation-name
Especifica o nome da regra @keyframes, identificando sua
animação.
animation-play-state
Permite você pausar e resumir a sequência da animação.
animation-timing-function
Essa propriedade configura o timing da animação, como ela
vai transitar por keyframes através das curvas de aceleração.
animation-fill-mode
Configura que valores são aplicados pela animação antes e
depois de se executar.
Componentes Animados
para uma UI mais interativa:
As próximas páginas irão explicar como criar alguns
componentes que vão deixar suas interfaces mais
interessantes com um pouco de animação.
Spinner:
Loader:
Elemento final
Efeito Touch
Botão Slide
Elemento final
Seta em Movimento
(Bouncing)
Efeito de Hover em Highlight
Input Hover
Obrigada por ler
esse guia!
O início do projeto que começou no Instagram foi
focado em animações em CSS. Depois eu queria
criar mais posts explicando como funcionava a
estrutura de uma animação, mas percebi que era
coisa demais pra dividir em poucos posts.
Mas com esse guia você vai ter uma base para
transfomar completamenete suas interfaces!
Conecte-se
comigo!
instagram.com.br/laracarvalhonet
contato@laracarvalho.net
laracarvalho.net