Aviso: esta pregunta es solo sobre Javascript simple y HTML.
Probé el método habitual para mover elementos HTML con el mouse dentro de una función de evento mousemove así:
element.style.left = e.clientX - offset.x + 'px'; element.style.top = e.clientY - offset.y + 'px';Anteriormente había capturado el desplazamiento xy dentro de una función element.mousedown y lo puse a cero en una función mouseup del documento.
El problema es que el elemento HTML siempre sigue al mouse sin apretar, como si estuviera unido a través de una banda elástica. Esto sucede porque Javascript actualiza la posición del elemento HTML al menos uno o más cuadros más tarde, lo cual es molesto y se ve descuidado y mal hecho.
Para ver este efecto, arrastre el objeto rápidamente horizontalmente de un borde de la pantalla a otro en este codepen (eso viene de otra pregunta). Luego intente mover una ventana en su PC para ver la gran diferencia.
https://codepen.io/kosarh79/pen/wqXGdE
Este es solo un ejemplo, he visto varios, y todos tienen el mismo problema. He notado que este problema empeora cuando hay un elemento más pesado, como un formulario, ya que toma más tiempo dibujar.
ACTUALIZACIÓN: aquí hay una captura de pantalla del problema: se amplifica bastante debido a la grabación simultánea, pero se hace una idea: