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 }; }