首先,要明白拖拽的流程是什么
1.当鼠标在被拖拽按钮按下时,开始拖拽 按下按钮:onmusedown
2.当鼠标移动时,被拖拽元素跟随鼠标移动 onmousemove
3.当鼠标松开时,被拖拽元素固定到当前位置 onmouseup
如果我们只仅仅让元素的left ,top跟随我们鼠标的clientX,clientY的话,那么我们实现的效果将是下面如图:

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

那么,怎样求红色线段,如下图:
(假设最外面的边框是包含这个元素的最外层边框)

所以,红色线段就是clientX-offsetLeft clientY-offsetTop
所以元素的拖拽:
