吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 919|回复: 4
收起左侧

[其他求助] 如何让拖动的div碰到自己移动的div后,移动的div消失呢?

[复制链接]
楚子沦i 发表于 2021-10-13 11:36
60吾爱币
本帖最后由 楚子沦i 于 2021-10-13 16:32 编辑

如何让拖动的div碰到自己移动的div后,移动的div消失呢?
我自己加的判断一直是false,求大佬指点下

[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="zh">
<head>
	<meta charset="UTF-8" />
	<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
	<meta http-equiv="X-UA-Compatible" content="ie=edge" />
	<title>Document</title>
	<style type="text/css">
		* {
			margin: 0;
			padding: 0;
		}
		html,body {
			height: 100%;
			width: 100%;
		}
		.box {
			position: absolute;
			height: 50px;
			width: 50px;
			background: red;
			z-index: 1;
		}
		.movebox {
			position: absolute;
			height: 50px;
			width: 50px;
			background: red;
		}
	</style>
</head>
<body>
	<div class="box"></div>
	<div class="movebox box1">
		
	</div>
	<div class="movebox box4">
		
	</div>
	<div class="movebox box3">
		
	</div>
	<div class="movebox box2">
		
	</div>
	<div class="movebox box5">
		
	</div>
	<div class="movebox box6">
		
	</div>
	<script type="text/javascript">
		const box = document.querySelector('.box');
		let maxwidth = document.body.clientWidth - box.offsetWidth;
		let maxheight = document.body.clientHeight - box.offsetHeight;
		box.addEventListener('touchstart',function(e){
			startx = e.touches[0].clientX - box.offsetLeft;
			starty = e.touches[0].clientY - box.offsetTop;
			document.addEventListener("touchmove", defaultEvent, { passive: false });
		})
		box.addEventListener('touchmove',function(e){
			endx = e.touches[0].clientX - startx;
			endy = e.touches[0].clientY - starty;
			if (endx < 0){
				endx = 0;
			}
			if(endy<0){
				endy = 0;
			}
			if(endx > maxwidth){
				endx = maxwidth;
			}
			if(endy >maxheight){
				endy = maxheight;
			}
			box.style.left=endx+'px';
			box.style.top=endy+'px'
			console.log(diffnumleft<10&&diffnumleft>=0&&diffnumtop>-10&&diffnumtop<=0)
		})
		box.addEventListener('touchend',defaultEvent,{ passive: false });
		function defaultEvent(e) {
			e.preventDefault();
		}
		
		
		const movebox = document.querySelectorAll('.movebox');
		setInterval(()=>{
			movebox[0].style.left = (maxwidth - movebox[0].offsetLeft)*Math.random()+'px';
			movebox[0].style.top = (maxheight - movebox[0].offsetHeight)*Math.random()+'px';
			movebox[0].style.transition = 'all 1s'
		},1000)
		let diffnumleft = parseInt(box.style.left)-parseInt(movebox[0].style.left);
		let diffnumtop = parseInt(box.style.top)-parseInt(movebox[0].style.top);
		if(diffnumleft<10&&diffnumleft>=0&&diffnumtop<10&&diffnumtop>=0){
			console.log(1)
		}
	</script>
</body>
</html>

最佳答案

查看完整内容

来了来了 客气啦~ 另外我还是建议别通过CSS来计算位置 部分浏览器下可能会存在性能问题 有时间有兴趣的话去试试用getBoundingClientRect之类的方法来做碰撞的计算,可以参考下这篇文章: https://juejin.cn/post/6906878301181050888

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zhzhch335 发表于 2021-10-13 11:36
来了来了 客气啦~
另外我还是建议别通过CSS来计算位置 部分浏览器下可能会存在性能问题
有时间有兴趣的话去试试用getBoundingClientRect之类的方法来做碰撞的计算,可以参考下这篇文章:
https://juejin.cn/post/6906878301181050888
yifei8155 发表于 2021-10-13 19:40
链接: https://pan.baidu.com/s/1DduRIq90NzJyMIUTeA2aAw 提取码: xv9x 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v5的分享

只是简单的写了下,没有写手机自适应,具体你的下载看看就知道了!
看人看法,对于手机游戏,通常是直接在一定时间内,点击消除对应的事物,获得分数还通关或排名,我给做的就是这种!
写的不好,就当相互学习了,希望能帮到你

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
楚子沦i + 1 + 1 我很赞同!

查看全部评分

 楼主| 楚子沦i 发表于 2021-10-13 21:29
yifei8155 发表于 2021-10-13 19:40
链接: https://pan.baidu.com/s/1DduRIq90NzJyMIUTeA2aAw 提取码: xv9x 复制这段内容后打开百度网盘手机App ...

我已经实现了,点击消失其实我会的,我当时就是发现移动的话,一下会消除好多,但是我后来加了个判断好了。感谢啊
 楼主| 楚子沦i 发表于 2021-10-14 10:56
zhzhch335 发表于 2021-10-13 11:36
来了来了 客气啦~
另外我还是建议别通过CSS来计算位置 部分浏览器下可能会存在性能问题
有时间有兴趣的话 ...

好的zsbd
返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 22:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表