jQuery 拖拽div

功能实现:
1、鼠标按键按下拖拽div
2、div不能超出边框
3、鼠标按键抬起停止拖拽
在这里插入图片描述

实现样式

HTML实现

<div id="wrap">
	<div id="box"></div>
</div>

css实现

#wrap {
	width: 500px;
	height: 500px;
	margin: 0px auto;
	border: 2px solid red;
	position: relative;
}

#box {
	width: 50px;
	height: 50px;
	background-color: #0000FF;
	position: absolute;
}

实现效果
js实现

$("#box").mousedown(function (event) {

	// 指针相对于小盒子的偏移量,鼠标相对于窗口的坐标-小盒子相对于窗口的偏移量
	var xbox = event.pageX - $("#box").offset().left;
	var ybox = event.pageY - $("#box").offset().top;

	console.log(xbox, ybox);
	// 鼠标移动事件
	$(document).mousemove(function (eve) {
		// 鼠标相对于窗口的坐标
		var x = eve.pageX;
		var y = eve.pageY;

		// 大盒子相对于窗口的偏移量
		var wrapx = $("#wrap").offset().left;
		var wrapy = $("#wrap").offset().top;

		// 大盒子的宽高,小盒子的宽高
		var wrapw = $("#wrap").width();
		var wraph = $("#wrap").height();
		var boxw = $("#box").width();
		var boxh = $("#box").height();

		// 小盒子移动
		var movex = x - xbox - wrapx;
		var movey = y - ybox - wrapy;
		// 临界值判断
		// 小盒子不能超过大盒子左侧
		if (movex <= 0) {
			movex = 0;
		}
		// 不能超过右侧
		if (movex >= wrapw - boxw) {
			movex = wrapw - boxw;
		}
		// 不能超过上面
		if (movey <= 0) {
			movey = 0;
		}
		// 不能超过下面
		if (movey >= wraph - boxh) {
			movey = wraph - boxh;
		}
		// 检测值是否正确
		console.log(movex, movey);

		// 移动效果,改变left和top值
		$("#box").css({
			"left": movex + "px",
			"top": movey + "px"
		});

	});
});

// 鼠标松开时,小盒子不移动
$(document).mouseup(function () {
	// 使用off事件取消绑定事件
	$(document).off("mousemove");
});
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值