Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Transición en múltiples elementos al mismo tiempo usando JavaScript

¡Salud! Tengo un problema al depurar cierto comportamiento que ocurre principalmente en el navegador Chrome. Aquí está el ejemplo simplificado: https://jsfiddle.net/pd3xb2uo/

El objetivo es hacer la transición de múltiples elementos a través del código JS al mismo tiempo. En el ejemplo, cuando hace clic en el botón, los elementos se mueven hacia la izquierda usando translate3d agregado a través de JS. Funciona bien, pero hay algunas advertencias:

  1. Hay una pequeña brecha que aparece entre los elementos la mayor parte del tiempo
  2. A veces, cuando hace clic más rápido en el botón, aparece un gran espacio entre los elementos.

Aquí están las capturas de pantalla de ambos casos:

pequeña brecha

gran brecha

Cualquier ayuda o idea sobre por qué está sucediendo sería muy apreciada :) Parece que hay un retraso de unos milisegundos antes de que el atributo de estilo se actualice en ciertos elementos, pero no tengo idea de por qué:/

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema ocurre porque está transicionando 100 elementos al mismo tiempo y debido a las transiciones de medio píxel.

Si sabe qué ancho y cuántos elementos tiene, entonces puede hacerlo así:

 const container = document.querySelector('.container-inner'); for (let i = 1; i < 100; i++) { const div = document.createElement('div'); div.classList.add('element'); div.textContent = `Element ${i}`; container.appendChild(div); } let transition = 0; document.querySelector('button').addEventListener('click', () => { transition -= 100; container.style.transform = `translateX(${transition}px)`; });
 .container{ width: 100%; overflow: hidden; } .container-inner{ display: flex; flex-direction: row; transition: transform .3s; } .element { width: 100px; box-sizing: border-box; display: flex; justify-content: center; align-items: center; padding: 2rem; text-align: center; transition: transform .3s; background-color: #A67583; }
 <button>Move</button> <div class="container"> <div class="container-inner"></div> </div>

Ahora solo se cambia un elemento y funciona sin problemas.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda