元素拖拽是一个比较典型的前端学习案例,需要对 JavaScript 的事件有一定的了解,我也是在最近的工作中才重新拾起了这块内容,通过在 Vue3 这种声明式编程风格的框架中把元素拖拽一次讲清楚。
准备实验环境
依旧推荐你来1024Code Fork 我的《【项目模板】Vue3+Vite3+Ts4》 开始这次学习。
PS:Vue3 模板全局样式中的居中属性可能会造成实验干扰,请注意!!!
元素的位置和移动
在实现元素拖拽我们使用 mouse 事件,在 mouse 事件的回调函数中可以得到当前事件发生时元素的位置,对应的属性是 MouseEvent 中的 clientX 和 clientY,我们后续将通过读取这两个属性来实时更新元素的位置。
元素的移动推荐优先使用 transform 中的 translate 实现,相比于修改元素的 top、left 属性来说不会造成元素布局的改变,避免了回流和重绘造成的性能影响。
PS:在 MDN 有一份关于translate的使用和体验,可以感受一下。
定义三组坐标
分别定义用来记录元素初始位置的一组坐标(originalPosition)、元素被按下时指针

本文详细介绍了如何在 Vue3 中实现元素拖拽功能。通过注册和处理 mousedown、mousemove 和 mouseup 事件,结合 CSS translate 技术,避免了布局的回流和重绘,提高了性能。同时,文章提供了完整的代码示例和步骤解析,帮助读者理解拖拽的核心逻辑。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



