为了账号安全,请及时绑定邮箱和手机立即绑定

鼠标拖曳效果

鼠标拖曳效果

LOopz_ 2016-11-21 21:09:18
(为什么当设mousedown,mousemove都绑定在同一个对象时(img),鼠标释放时,物体仍会随着移动,当鼠标再点击一次时,物体才停止移动。而当mousedown,mousemove绑定在不同的对象时,则运行正常。)求解决,谢谢~~~<!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title><style type="text/css">*{ margin:0px; padding:0px;}#box{ width:400px; height:466px; overflow:hidden; position:absolute; border:4px solid #000000; }#nav{ background:#6DE9E3; cursor:move;}</style><script>window.onload=function (){ var nav=document.getElementById("nav"); var box=document.getElementById("box"); var img=document.getElementById("img3"); img.onmousedown=function(e){ e=e || window.event; img.style.position='relative'; var divX=e.clientX-img.offsetLeft; var divY=e.clientY-img.offsetTop; startMove(divX,divY); } function startMove(divX,divY){ document.onmousemove=function(e){ e=e || window.event; var l=e.clientX-divX; var t=e.clientY-divY; img.style.left=l+'px'; img.style.top=t+'px'; } document.onmouseup=function(){  document.onmousemove=null;  document.onmouseup=null;  } }}</script></head><body><div id="box"><div id="nav">nav</div><img src="img3.jpg" id="img3"></div></body></html>
查看完整描述

1 回答

?
Lemon156

TA贡献91条经验 获得超32个赞

onmousemove是绑定在document上的也就是说鼠标在页面上移动时图片就能跟着移动,但onmousemove调用的函数的参数是event,也就是当前事件,而startMove函数是在onmousedown里调用的,所以当前事件也就是鼠标点下的这个事件,这样就实现点下图片能拖曳图片的效果,


如果你把onmousemove和onmousedown绑定同一个对象时,当你点下图片的时候,你会发现只有鼠标经过图片时图片才会随鼠标移动,而当鼠标不经过图片时,图片也就停止移动,而且你会发现,onmouseover调用的函数所传参数根本就没什么意义,这就是为什么不会出现拖曳效果了

查看完整回答
反对 回复 2016-11-21
  • LOopz_
    LOopz_
    谢谢! 你好,我运行上面那段代码的时候,可以实现点了图片后,图片在页面内跟着鼠标移动,但是无法实现鼠标松开,物体不跟着移动。鼠标松开后,再次点击鼠标,物体停止移动。 但如果把 img.onmousedown=function(e){ e=e || window.event; img.style.position='relative'; var divX=e.clientX-img.offsetLeft; var divY=e.clientY-img.offsetTop; startMove(divX,divY); } 改成 nav.onmousedown=function(e){ e=e || window.event; img.style.position='relative'; var divX=e.clientX-img.offsetLeft; var divY=e.clientY-img.offsetTop; startMove(divX,divY); } 其他代码不变 就可以实现正常的拖曳效果,这是为啥?
  • Lemon156
    Lemon156
    你可以再仔细看一下代码你就会发现,onmousedown函数里设置了img的position是relative的,这就使得它能浮动,而在onmousemove里又设置了img的left和top,这也就使得图片能随鼠标而移动了
  • 1 回答
  • 0 关注
  • 1080 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信