Mostraremos un ejemplo simple de movimiento de un elemento con el cursor o el touch, utilizando una función del framework.
El siguiente artículo es un ejemplo de uso de la función JsMove. Éste es el código:
function Example() {
var container = document.querySelector('#example');
var box = container.querySelector('div');
var limits;
function startFn(event) {
event.stopPropagation();
event.preventDefault();
let a = container.getBoundingClientRect();
let b = box.getBoundingClientRect();
limits = {
iniX: event.clientX - b.x + a.x,
iniY: event.clientY - b.y + a.y,
maxX: a.width - b.width,
maxY: a.height - b.height
};
};
function moveFn(event) {
let left = event.clientX - limits.iniX;
let top = event.clientY - limits.iniY;
if (left < 0) {
left = 0;
} else if (left > limits.maxX) {
left = limits.maxX;
}
if (top < 0) {
top = 0;
} else if (top > limits.maxY) {
top = limits.maxY;
}
box.style.left = left + 'px';
box.style.top = top + 'px';
};
function endFn() {
let letters = '0123456789ABCDEF';
let color = '#';
for (let i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
box.style.backgroundColor = color;
};
// move box
JsMove(box, startFn, moveFn, endFn);
}
Y este será el resultado:
Conclusión
No queda mucho para agregar, hay dos elementos: container
y box
; la variable limits
guarda los valores iniciales, y la función JsMove
con las funciones correspondientes a los eventos de inicio, movimiento y final. Con esta última función todo queda más claro y no es necesario dedicarse a listar los eventos.