
点击需要拖动元素时,获取该元素的初始位置。
鼠标移动期间 获取元素当前的位置信息
计算
进行事件监听
拖拽的实现原理:通过事件mousedown(事件的触发) →mousemove(事件的控制) →mouseup(事件的清除),拖拽的过程就是mousemove阶段;
问题产生的原因:因为mousemove 的间隔性触发,当两次mousemove事件触发的间隔中,鼠标移动距离出了element的范围,就会产生鼠标脱离element范围,拖拽就停止,
解决方法: 将mousemove事件挂在docment,而不是对应的element,此时鼠标滑动只要不出docment范围就不会触发上述情况。
拖动事件完成的动作时是:mousedown(事件的触发) →mousemove(事件的控制) →mouseup(事件的清除) 但是mouseup的时候 同时会触发 点击事件(如果元素上面有点击事件的话)
处理办法:记录mousedown(记录开始时间) →mousemove→mouseup(记录结束时间) 的时间 根据时间长短判断是进行了点击事件还是进行了拖拽事件。
正常需求的话 就希望拖拽元素只在屏幕的可视范围内进行拖拽,不能跑出去。
在onmousemove 中添加边缘控制就好,具体范围可以根据具体需求更改。
newDiv=createElement("div")//动态创建DIVnewDIV.width=600px
....//这里是div的属性定义
......
document.getElementsByTagName("body").appendChild(newDiv)//添加到body里
..
div的拖动通过绑定onmousedown 和onmousemove 和 onmouseup 事件,获取鼠标当前坐标,经过计算后设置DIV的posision就可以了
1、新建一个HTML文件,保存为test.html,用于编写代码实现拖放功能 。
2、在test.html添加一个div标签,并且给它一个id,用于下面编写样式。
3、通过div的id , 给div定义CSS样式,例如,把div定义为一个带边框的长方形。下面将实现将图片拖放在这个长方形中。
4、在div的下面定义一张被拖放图片,并设置该图片的属性为允许被拖放。
5、在被拖放的图片上加上一个ondragstart事件,即图片被拖动时触发这个事件。再给事件一个函数,用于拖动图片时,把图片保存在一个变量中。
6、运行代码,在浏览器中查看结果:至此,完成了使用JS实现拖放图片到div中的功能。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)