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

79
Vistas
Cuadrado móvil en JS - Problema con offsetX/offsetY

Quisiera preguntarte sobre ayuda. Trato de hacer un cuadrado que siga a mi mouse cuando lo muevo, pero algo está mal con mi función y todo el tiempo después de mover el mouse, el cuadrado vuelve a su posición predeterminada.

CÓDIGO:

 let square = document.querySelector('.square') let container = document.querySelector('.container') container.addEventListener('mousemove', movingSquare); function movingSquare(e) { square.style.transform = "translate" + "(" + e.offsetX + "px" + "," + e.offsetY + "px" + ")"; }
 .container { background-color: red; height: 200px; width: 400px; } .square { background-color: blue; height: 50px; width: 50px; }
 <div class="container"> <div class="square"> </div> </div>

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

0

El error de retraso no ocurre cuando se mueve hacia arriba o hacia la izquierda, pero ocurre cuando se mueve hacia abajo o hacia la derecha, esto ocurre cuando se mueve hacia abajo o hacia la derecha, el evento mousemove de los contenedores, no se activa en su lugar, el cuadrado recibe el evento, como cuando te mueves hacia la derecha/abajo, el mouse cae sobre el cursor

El siguiente ejemplo es cómo debería verse su problema

 let square = document.querySelector('.square') let container = document.querySelector('.container') container.addEventListener('mousemove', movingSquare); function movingSquare(e) { square.style.transform = "translate" + "(" + e.offsetX + "px" + "," + e.offsetY + "px" + ")"; }
 .container { background-color: red; height: 200px; width: 400px; } .square { background-color: blue; height: 50px; width: 50px; }
 <div class="container"> <div class="square"> </div> </div>


Solución

El cuadrado recibe el evento porque tiene pointer-events auto(true).
Puede deshabilitar esto en css usando pointer-events:none;

Vea el fragmento a continuación

 let square = document.querySelector('.square') let container = document.querySelector('.container') container.addEventListener('mousemove', movingSquare); function movingSquare(e) { square.style.transform = "translate" + "(" + e.offsetX + "px" + "," + e.offsetY + "px" + ")"; }
 .container { background-color: red; height: 200px; width: 400px; } .square { background-color: blue; height: 50px; width: 50px; pointer-events: none;/*ADDED THIS LINE*/ }
 <div class="container"> <div class="square"> </div> </div>

Consulte aquí

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