Para criar animações em JavaScript, podemos usar a API de animação do navegador, que é chamada de Web Animations API. Essa API permite que você crie animações personalizadas com base em objetos DOM, CSS, SVG ou qualquer outro objeto que possa ser animado.
Para começar a usar a Web Animations API, primeiro você precisa criar uma animação. Você pode criar uma animação usando a classe Animation() ou KeyframeEffect(). A classe Animation() é usada para criar uma animação a partir de um objeto KeyframeEffect(), que define as propriedades a serem animadas. A classe KeyframeEffect() é usada para definir as propriedades a serem animadas e o valor inicial e final.
Por exemplo, o seguinte código cria uma animação de transição de opacidade de 0 a 1 em 2 segundos:
// cria um objeto KeyframeEffect() para definir as propriedades a serem animadas
const efeito = new KeyframeEffect(
document.querySelector('.meu-elemento'), // elemento a ser animado
[
{ opacity: 0 }, // valor inicial
{ opacity: 1 } // valor final
],
{ duration: 2000 } // duração da animação em milissegundos
);
// cria uma animação com base no objeto KeyframeEffect()
const animacao = new Animation(efeito, document.timeline);
animacao.play(); // inicia a animação
Além disso, a Web Animations API também fornece outros métodos para controlar e personalizar a animação, como pause(), resume(), reverse(), setPlaybackRate() e addEventListener() para eventos de animação.
No entanto, é importante lembrar que a Web Animations API ainda é uma tecnologia experimental e nem todos os navegadores suportam todos os recursos da API. Portanto, é recomendável verificar a compatibilidade do navegador antes de usá-la em produção.
Exemplo
Vamos supor que temos uma imagem que queremos mover de um lado para o outro continuamente. Podemos fazer isso usando JavaScript e a propriedade CSS transform
.
Primeiro, vamos adicionar uma imagem em nosso HTML:
<img id="myImage" src="caminho/para/imagem.jpg">
Agora, vamos criar um arquivo JavaScript e selecionar o elemento de imagem:
const image = document.querySelector('#myImage');
Em seguida, vamos criar uma função que alterna a posição horizontal da imagem entre 0 e 100 pixels usando a propriedade transform: translateX()
. Para isso, usaremos um contador e a função setInterval()
para chamar a função de atualização periodicamente:
let position = 0;
function moveImage() {
image.style.transform = `translateX(${position}px)`;
position += 5;
if (position > 100) {
position = 0;
}
}
setInterval(moveImage, 50);
Neste exemplo, a função moveImage() é chamada a cada 50 milissegundos para atualizar a posição da imagem. A posição é atualizada em incrementos de 5 pixels a cada chamada, e quando atinge 100 pixels, é reiniciada para 0 para criar um efeito de loop.
Com essas alterações, agora podemos mover nossa imagem de um lado para o outro continuamente!