Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

147
Visualizações
¿Cómo puedo animar y acelerar un elemento DOM con JavaScript?

Estoy creando una aplicación en la que necesito que un objeto se mueva del punto a al punto b, comenzando rápido pero luego disminuyendo la velocidad. Quiero hacer esto con pure vanilla js y sin bibliotecas en absoluto. Este es mi código actual para animar algo a una velocidad constante y me preguntaba si era posible modificarlo o algo así.

 let player = document.querySelector('.player'); var id = setInterval(frame, 1); let counter = 0; function frame() { if (counter == 50) { clearInterval(id); counter = 0; return; } else { player.style.top = player.offsetTop - 2 + 'px'; counter++ } }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Sería mejor y más fácil usar las capacidades de CSS3. Por ejemplo, define una clase CSS que tiene transición CSS o transformación en ella.

 .move{ transform: translateX(300px); transition: transform .3s ease-out; }

luego simplemente agrega o elimina la clase usando JavaScript al elemento DOM que desea que tenga efecto. https://jsbin.com/sosuqoyasi/edit?html,css,js,salida

En su caso, puede hacer que 300px sea una variable CSS y actualizarla en su javascript antes de agregar la clase

si desea tener más control sobre el CSS en su código JS, use la API de animación web: https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API

about 4 years ago · Juan Pablo Isaza Relatório

0

Usaría un tiempo de espera en lugar de un intervalo con alguna recursión como esta...

 let player = document.getElementById("player") let a = 0 const b = 500 const playerWidth = 50 animate = () => { a += 20 setTimeout(() => { if (a < b - playerWidth) { animate() } player.style.left = a }, a) } animate()

aquí hay un ejemplo de trabajo

https://replit.com/@BenjaminKile/MoralRegularTransformations#index.html

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda