js拖拽盒子移动效果

学习目标:js拖拽盒子移动效果

css部分:
#legend{
position: fixed;
bottom: 80px;
left: 100px;
width: 143px;
height: 328px;
z-index: 999;
backdrop-filter: blur(20px);

}

body部分

<div id='legend'>   图例 </div>

js部分

// 图例拖拽
	drag('legend');
	function drag(id){
		var dv = document.getElementById(id);
		var isDown = false;
		//鼠标按下事件
		dv.onmousedown = function(e) {
			//获取x坐标和y坐标
			x = e.clientX;
			y = e.clientY;


			//获取左部和顶部的偏移量
			l = dv.offsetLeft;
			t = dv.offsetTop;

			//开关打开
			isDown = true;
			//设置样式
			dv.style.cursor = 'move';
		}
		//鼠标移动
		dv.onmousemove = function(e) {
			if (isDown == false) {
				return;
			}
			//获取x和y
			var nx = e.clientX;
			var ny = e.clientY;
			//计算移动后的左偏移量和顶部的偏移量
			var nl = nx - (x - l);
			var nt = ny - (y - t);
			dv.style.left = nl + 'px';//盒子顶角左侧顶角的位置
			dv.style.top = nt + 'px';
		}
		//鼠标抬起事件
		dv.onmouseup = function() {
			//开关关闭
			isDown = false;
			dv.style.cursor = 'default';
		}
	}

学习内容:

鼠标拖拽盒子在电脑屏幕上移动

JavaScript中,实现拖拽功能并限制元素在一个特定范围内通常涉及到鼠标事件监听和位置处理。你可以通过以下几个步骤来实现: 1. **添加事件监听器**:首先,获取需要拖动的元素,并为其添加`mousedown`, `mousemove`, 和 `mouseup` 事件处理器。 ```javascript let draggableElement = document.getElementById('draggableBox'); draggableElement.addEventListener('mousedown', startDrag); draggableElement.addEventListener('mousemove', drag); draggableElement.addEventListener('mouseup', stopDrag); ``` 2. **开始拖动** (`startDrag` 函数):记录下鼠标的初始位置和元素的位置,并创建一个阻止默认行为的标志。 ```javascript function startDrag(event) { event.preventDefault(); initialPosition = { x: event.clientX - draggableElement.offsetLeft, y: event.clientY - draggableElement.offsetTop }; } ``` 3. **拖动过程** (`drag` 函数):计算当前鼠标位置与初始位置的差值,然后更新元素的位置,确保它始终位于指定范围内。 ```javascript function drag(event) { let newPosition = { x: Math.min(Math.max(initialPosition.x + event.clientX - draggableElement.offsetLeft, minX), maxX), y: Math.min(Math.max(initialPosition.y + event.clientY - draggableElement.offsetTop, minY), maxY) }; draggableElement.style.left = newPosition.x + 'px'; draggableElement.style.top = newPosition.y + 'px'; } ``` 4. **停止拖动** (`stopDrag` 函数):移除事件监听器。 5. **设定限制范围**:`minX`, `minY`, `maxX`, 和 `maxY` 是你需要设置的区域边界。确保它们已经初始化并且适应你的页面布局。 例如,如果你有一个宽度为200px、高度为100px的盒子,限制其只能在屏幕宽度500px到1000px之间水平移动,在50px到550px之间垂直移动,你可以这样做: ```javascript const minX = 0; const minY = 50; const maxX = window.innerWidth - draggableElement.offsetWidth; const maxY = window.innerHeight - draggableElement.offsetHeight; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值