Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

189
Views
Estoy usando el evento de clic para activar la animación CSS, ¿por qué la animación no se ejecuta de nuevo cuando se vuelve a hacer clic?

Soy nuevo en desarrollo web, estoy tratando de obtener una mejor comprensión de DOM.

El propósito de mi código es darle a un elemento algo de animación cuando se activa un evento de clic. Esto es lo que probé:

Código:

 const svg = document.getElementById('svg'); const button = document.getElementById('button'); button.onclick = function() { svg.style.animation = 'svg-color 5s linear 1 1s'; }
 svg { background-color: lightcyan; } @keyframes svg-color { 0% { background-color: lightcyan; } 50% { background-color: skyblue; } 100% { background-color: steelblue; } }
 <svg id="svg" width="300" height="300"></svg> <button id="button">button</button>

Funciona en el evento del primer clic. Pero cuando vuelvo a hacer clic en el botón, la animación no vuelve a ejecutarse.

¿Este problema se debe a DOM o al hecho de que configuré el recuento de iteraciones de animación como 1 en CSS?

Y si configuro el recuento de iteraciones de animación como infinito, ¿hay alguna manera de hacer que la animación vuelva a su estado inicial y se reproduzca nuevamente en el evento de clic?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

No sucede nada si asigna un estilo que ya está establecido en el elemento.

Debe eliminar el estilo cuando finalice la animación. De esa forma, el estilo será nuevo la próxima vez que haga clic.

 const svg = document.getElementById('svg'); const button = document.getElementById('button'); button.onclick = function() { svg.style.animation = 'svg-color 5s linear 1 1s'; } svg.addEventListener("animationend", (e) => e.target.style.animation = '');
 svg { background-color: lightcyan; } @keyframes svg-color { 0% { background-color: lightcyan; } 50% { background-color: skyblue; } 100% { background-color: steelblue; } }
 <svg id="svg" width="300" height="300"></svg> <button id="button">button</button>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!