快速实现边界处理

两行代码实现边界处理

首先观察下面呢这个图片,如果不想让小黑的边界越过小红,那就需要约束小黑水平和垂直两个方向上的坐标。

15

  • 我们可以直接用一个条件表达式来规定一下小黑的边界,假设小红时浏览器窗口,当然不要忘记给小黑使用绝对定位。
  • 首先时小黑的left值:
    –如果left<0,就让left=0,否则判断小黑是否超过右边界(l2 > window.innerWidth - d.offsetWidth ),这里记得要减去自身的宽度,同理如果超过了,就让他的left值等于 window.innerWidth - d.offsetWidth ,如果都不满足,那么就说明小黑没有越界。
  • 小黑的top值的确定同理。
l2 = l2 < 0 ? 0 :(l2 > window.innerWidth - d.offsetWidth ? window.innerWidth - d.offsetWidth : l2);
t2 = t2 < 0 ? 0 :(t2 > window.innerHeight - d.offsetHeight ? window.innerHeight - d.offsetHeight : t2);

通过鼠标拖拽元素移动的案例看一下

//CSS样式

<style>
		*{
			padding: 0;
			margin: 0;
		}
		div{
			position: absolute;
			width: 100px;
			height: 100px;
			background-image: url("https://www.xdsucai.cn/wp-content/uploads/2021/02/1612658624-ddc0e23514aaf99.png");
			background-position: 100px auto;
			background-size: cover;
		}
</style>

//body

<body>
	<div></div>
</body>

//JS部分

<script>
	var d = document.querySelector("div");
	// 鼠标按下后,图片跟随指针移动
	// 鼠标抬起后,取消移动事件
	d.onmousedown = function(e1){
		var l1 = this.offsetLeft;
		var t1 = this.offsetTop;
		var x1 = e1.clientX;
		var y1 = e1.clientY;

		window.onmousemove = function(e2){
			var x2 = e2.clientX;
			var y2 = e2.clientY;

			var l2 = l1 + x2 - x1;
			var t2 = t1 + y2 - y1;

			l2 = l2 < 0 ? 0 :(l2 > window.innerWidth - d.offsetWidth ? window.innerWidth - d.offsetWidth : l2);
			t2 = t2 < 0 ? 0 :(t2 > window.innerHeight - d.offsetHeight ? window.innerHeight - d.offsetHeight : t2);

			d.style.left = l2 + 'px';
			d.style.top = t2 + 'px';
		}
	}

	d.onmouseup = function(){
		window.onmousemove = null;
	}
</script>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值