相关的知识点
- clientX,offsetX,pageX,screenX的区别:参考
- 鼠标事件:mousedown、mousemove、mouseup
- 使用translate改变元素位置比使用top/left的性能高:参考1、参考2
原理
- 点击拖拽元素时:记录鼠标的位置(X, Y)
- 拖拽元素时:
- 获取鼠标当前位置(currentX, currentY)
- 计算出移动距离(translateX = currentX - X, translateY = currentY - Y)
- 修改元素的样式(transform: translate(translateX, translateY))
- 鼠标释放后,停止拖拽元素:重设元素样式(top, left, transform)
实现
完整代码