js实现图片拖动

HTML代码

<div id="imgDiv">
	<img id="img"/>
</div>

js代码

//给图片Div绑定鼠标按下事件
$("#imgDiv").addEventListener("mousedown", function(divEvent){
	//按下后,给整个document绑定鼠标移动事件(我这里图片可以在整个document拖动,所以给document绑定,也可以按自己需求进行调整)
	document.onmousemove = function(ev){
		//根据鼠标移动,调整图片Div的位置(这里要用到clientX、clientY、offsetX和offsetY),如果不减去offsetX和offsetY图片会一直在鼠标点的右下方。
		$("#imgDiv").style.left = ev.clientX - divEvent.offsetX + "px";
		$("#imgDiv").style.top = ev.clientY - divEvent.offsetY + "px";	
	}

	$("#imgDiv").onmouseup = function(){
		//鼠标抬起后,解绑mousemove事件
		document.onmousemove = null;
	}
	
	document.onmouseup = function(){
		//鼠标抬起后,解绑mousemove事件(避免用户拖动太快,导致鼠标点跑出imgDiv无法解绑mousemove事件,所以给document也绑定了mouseup事件)
		document.onmousemove = null;
	}
})

下图解释了Event中client和offset等一些属性值,便于理解上面的逻辑。
在这里插入图片描述
这里还有对上图,更加详细的介绍,可以点击了解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值