JS实现拖拽

首先,要明白拖拽的流程是什么 

1.当鼠标在被拖拽按钮按下时,开始拖拽  按下按钮:onmusedown

2.当鼠标移动时,被拖拽元素跟随鼠标移动  onmousemove

3.当鼠标松开时,被拖拽元素固定到当前位置  onmouseup


如果我们只仅仅让元素的left ,top跟随我们鼠标的clientX,clientY的话,那么我们实现的效果将是下面如图:


效果差别

为了使我们达到预先的效果,我们需要求出下面这张图中红色线段的长度,然后让元素减去红色线段,就会到达预期效果:


那么,怎样求红色线段,如下图:

(假设最外面的边框是包含这个元素的最外层边框)

所以,红色线段就是clientX-offsetLeft      clientY-offsetTop  


所以元素的拖拽:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容