JavaScript DOM animado


Índice

    Mostrar índice


Aprenda a criar animações HTML usando JavaScript.


Uma página da web básica

Para demonstrar como criar animações HTML com JavaScript, usaremos um simples página da Internet:

Exemplo

<!DOCTYPE html>
<html>
<body>
<h1>My First 
 JavaScript Animation</h1>

<div id="animation">My animation will go here</div>

</body>
</html>

Crie um contêiner de animação

Todas as animações devem ser relativas a um elemento contêiner.

Exemplo

<div id ="container">
  <div id ="animate">My 
 animation will go here</div>
</div>

Estilize os elementos

O elemento contêiner deve ser criado com style="posição: relativa".

O elemento de animação deve ser criado com style="posição: absoluto".

Exemplo

#container {
  width: 400px;
  height: 
 400px;
  position: relative;
  
 background: yellow;
 }
#animate {
  width: 50px;
  height: 
 50px;
  position: absolute;
  
 background: red;
}

Experimente você mesmo →

<!Doctype html>
<html>
<style>
#container {
  width: 400px;
  height: 400px;
  position: relative;
  background: yellow;
}
#animate {
  width: 50px;
  height: 50px;
  position: absolute;
  background: red;
}
</style>
<body>

<h2>My First JavaScript Animation</h2>

<div id="container">
<div id="animate"></div>
</div>

</body>
</html>


Código de animação

Animações JavaScript são feitas programando mudanças graduais na estrutura de um elemento. estilo.

As mudanças são chamadas por um timer. Quando o intervalo do temporizador é pequeno, o a animação parece contínua.

O código básico é:

Exemplo

id = setInterval(frame, 5);
function frame() {
  if (/* 
 test for finished */) {
    clearInterval(id);
  } else {
      
 /* code to change the element style */  
  }
}

Crie a animação completa usando JavaScript

Exemplo

function myMove() {
  let id = null;
  const elem = document.getElementById("animate");
  let pos = 0;
  
  clearInterval(id);
  id = setInterval(frame, 5);
  
 function frame() {
    if (pos == 
 350) {
      
 clearInterval(id);
    } else {
      
 pos++; 
      elem.style.top = pos + 'px'; 
      elem.style.left = pos + 'px'; 
      }
  }
}

Experimente você mesmo →

<!DOCTYPE html>
<html>
<style>
#container {
  width: 400px;
  height: 400px;
  position: relative;
  background: yellow;
}
#animate {
  width: 50px;
  height: 50px;
  position: absolute;
  background-color: red;
}
</style>
<body>

<p><button onclick="myMove()">Click Me</button></p> 

<div id ="container">
  <div id ="animate"></div>
</div>

<script>
function myMove() {
  let id = null;
  const elem = document.getElementById("animate");   
  let pos = 0;
  clearInterval(id);
  id = setInterval(frame, 5);
  function frame() {
    if (pos == 350) {
      clearInterval(id);
    } else {
      pos++; 
      elem.style.top = pos + "px"; 
      elem.style.left = pos + "px"; 
    }
  }
}
</script>

</body>
</html>