Article image
Diego Nunes
Diego Nunes12/12/2023 14:26
Compartilhe

Que tal animar um pouco a sua aplicação com uns truques de CSS?

  • #CSS

O css animations é um módulo que permite a criação de animações em uma página web. Além de deixar seu site mais elegante e moderno, você também pode melhorar a interação de seu usuário com sua aplicação.

Abaixo, falarei por onde você poderá começar a dar mais vida nas suas aplicações. Vamos começar vendo como manipular o posicionamento dos elementos e seguir elencando os recursos que estão à nossa disposição. Há basicamente duas categorias: Transform e Transition.

Transform

O transform permite a manipulação visual de um elemento. Através da transformação, você pode rotacionar, movimentar, escalonar etc.

Translate

A propriedade translate desloca um elemento horizontal ou verticalmente. Para posicionar um elemento apenas no eixo X ou Y, utiliza-se a propriedade translateX(valor) ou translateY(valor). Também é possível combinar os dois valores através da propriedade translate(x, y).

Scale

Para aumentar ou diminuir as proporções do elemento, usa-se a opção scale. Aqui, também é possível modificar as dimensões apenas no eixo x scaleX(valor), no eixo y scaleY(valor) ou ambos scale(x, y).

Rotate

O rotate, é responsável por rotacionar o elemento. Os valores podem ser passados em graus (10deg) ou a unidade turn (0.5turn).

Skew

Usa-se o skew para inclinar um elemento. Essa propriedade recebe um valor em grau e pode alterar o eixo x, y ou ambos através de skewX(valor), skewY(valor), skew(x, y) respectivamente.

É possível encadear várias dessas propriedades no shorthand transform:

transform: translate(10px)scale(1.5)rotate(45deg)skew(10deg);

Para ver um exemplo usando transform, acesse codepen.io/diegodnunes12

Transition

O Transition controla a velocidade da transição de valores de uma propriedade CSS. Dessa forma, ao invés do elemento ser alterado de forma instantânea, você pode controlar o tempo para esse processo, deixando mais suave a transformação.

Transition-property

Indica que propriedade passará pela transformação.

Transition-duration

Informa a duração da transição.

Transition-delay

Tempo entre o gatilho e o início da transição propriamente dito.

transition-timing-function

Descreve uma curva de aceleração para a transição. Alguns valores possíveis são:

  • ease: Inicia a transição de forma lenta, acelera e depois volta a ficar lenta no final;
  • linear: A velocidade da transição se mantém do início ao fim;
  • ease-in: Inicia de forma mais suave;
  • ease-out: Finaliza de forma mais suave;
  • ease-in-out: Suaviza no início e no final.

Você também pode personalizar usando a função cubic-bezier(), passando os valores da função de tempo. Por exemplo: cubic-bezier(.15, .10, .20,.30).

Para ver um exemplo usando transition, acesse codepen.io/diegodnunes12

@keyframes

Os keyframes controlam as etapas de uma sequência de animação em CSS, especificando o que acontecerá em cada momento.

@keyframes  box {
   0% ou from { ... }
   50% { ... }
   100% ou to { ... }
}

No código acima, temos um keyframe com o nome box, nele inserimos três pontos chaves: O ínicio que pode receber os valores 0% ou from, o meio através dos 50% e o final onde podemos inserir 100% ou to. Entre o início e o fim pode haver quantos pontos chaves necessários.

Para executarmos o keyframes, vamos ao elemento que desejamos animar e inserimos as seguintes informações:

Animation-name

Nome da animação, inserido após o keyframes. No nosso exemplo, box.

Animation-duration

Duração da animação. Aceita valores em segundos (s) ou em milissegundos (ms).

Animation-timing-function

Como a animação progride em cada ciclo. Como no transition-timing-function são aceitos os valores easelinearease-inease-outease-in-out e a personalização utilizando a função cubic-bezier(1,1,1,1). No entanto, aqui podemos também inserir a função steps, que indica os pontos da animação. Exemplo: steps(3).

Animation-delay

Tempo de espera entre o gatilho para o início de fato da animação.

Animation-iteration-count

Número de vezes que a animação será reproduzida. Podem ser valores inteiros (3), fracionados (2.5) e chave infinite para ficar sempre executando.

Animation-direction

Especifica a direção da animação. Os valores podem ser:

  • Reverse: Executa de trás para frente;
  • Alternate: Alterna a forma de execução, primeiro executa de frente para trás e depois de trás para frente;
  • Alternate-reverse: Alterna a forma de execução, primeiro executa de trás para frente e depois de frente para trás.

Animation-fill-mode

Define os valores que serão aplicados antes e/ou depois da animação. Os valores aceitos são:

  • Forwards: Significa que o último estilo da animação será mantido;
  • Backwards: Informa que o estilo inicial da animação será mantido;
  • Both: A animação seguirá as regras para frente e para trás, estendendo as propriedades da animação em ambas as direções.

Animation-play-state

Define se a aplicação está sendo executada ou pausada: running paused. No caso, você pode colocar um paused quando houver um hover no elemento para a animação parar enquanto o usuário estiver com o mouse sobre o elemento.

Aqui também é possível utilizar um shorthand animation, como no exemplo abaixo:

div { animation: box 5s infinite; }

Para ver um exemplo usando keyframes, acesse codepen.io/diegodnunes12

Próximos passos

Para concluir, gostaria de recomendar o mini curso de animações CSS do canal do youtube: desenvolvimento para web, que me ajudou demais no início dos meus estudos sobre esse assunto.

Espero ter ajudado e até a próxima.

Compartilhe
Comentários (0)