| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- export function useDrag(sliderDom: HTMLElement) {
- let startPoint = { x: 0, y: 0 };
- let isDown = false;
- let premitiveX = 0;
- let premitiveY = 0;
- function onMouseDown(e: Event) {
- e.stopPropagation();
- e.preventDefault();
- isDown = true;
- const style = window.getComputedStyle(sliderDom!);
- const { transform } = style;
- if (transform !== 'none') {
- const matrixArr = transform.replace(/[^0-9\-,]/g, '').split(',');
- console.log('matrixArr', matrixArr);
- premitiveX = parseInt(matrixArr[4]);
- premitiveY = parseInt(matrixArr[5]);
- } else {
- premitiveX = 0;
- premitiveY = 0;
- }
- const { clientX, clientY } = e;
- startPoint = { x: clientX, y: clientY };
- }
- function onMosueUp(e: any) {
- isDown = false;
- }
- function onMouseMove(e: any) {
- if (!isDown) return;
- const { clientX, clientY } = e;
- const moveDistancX = clientX - startPoint.x;
- const moveDistancY = clientY - startPoint.y;
- const offsetX = premitiveX + moveDistancX;
- const offsetY = premitiveY + moveDistancY;
- sliderDom!.style.transform = `translate(${offsetX}px, ${offsetY}px)`;
- }
- sliderDom.addEventListener('mousedown', onMouseDown);
- document.addEventListener('mousemove', onMouseMove);
- document.addEventListener('pointerup', onMosueUp);
- return { onMouseDown, onMouseMove, onMosueUp };
- }
|