加入收藏 | 设为首页 | 会员中心 | 我要投稿 焦作站长网 (https://www.0391zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

js实现碰撞测试

发布时间:2021-10-12 10:45:20 所属栏目:外闻 来源:互联网
导读:这篇文章主要为大家详细介绍了js实现碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了js实现碰

 

 

代码:

 

<!DOCTYPE html>

<html lang="en">

 

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

</head>

<style>

div {

position: absolute;

top: 0px;

right: 0px;

bottom: 0px;

left: 0px;

margin: auto;

width: 300px;

height: 300px;

background-color: green;

}

 

span {

position: absolute;

top: 0px;

left: 0px;

display: block;

width: 100px;

height: 100px;

background-color: rgb(10, 151, 233);

}

</style>

 

<body>

<div></div>

<span></span>

<script>

var div = document.getElementsByTagName('div')[0];

var span = document.getElementsByTagName('span')[0];

span.onmousedown = function(e) {

// 事件对象兼容

e = window.event || e;

// 添加全局捕获

if (span.setCapture) {

span.setCapture();

}

// 鼠标按下获取鼠标距离页面左侧和顶部距离

var x = e.clientX;

var y = e.clientY;

// 元素距离页面左侧和顶部距离

var elex = span.offsetLeft;

var eley = span.offsetTop;

// 鼠标距离元素距离 =鼠标距离页面距离 -元素距离页面距离

var X = x - elex;

var Y = y - eley;

document.onmousemove = function(e) {

// 鼠标移动 获取鼠标距离页面距离

// 事件对象兼容

e = window.event || e;

var movex = e.clientX;

var movey = e.clientY;

// 元素的left和top值 =鼠标距离页面距离 -鼠标距离元素距离

var leftx = movex - X;

var lefty = movey - Y;

/*----------------------------------------------------------*/

// 碰撞检测

// 1.左侧安全距离 =大盒子距离页面左侧距离 -小盒子占位宽

var safeleft = div.offsetLeft - span.offsetWidth;

// 2.右侧安全距离 大盒子距离页面左侧距离 +大盒子占位宽

var saferight = div.offsetLeft + div.offsetWidth;

// 3.上侧安全距离 =大盒子距离页面顶部距离 -小盒子占位高

var safetop = div.offsetTop - span.offsetHeight;

// 4. 下侧安全距离 = 大盒子距离页面顶部距离 + 大盒子占位高

var safebottom = div.offsetTop + div.offsetHeight;

 

if (leftx < safeleft || leftx > saferight || lefty < safetop || lefty > safebottom) {

div.style.background = 'green';

} else {

div.style.background = 'red';

(编辑:焦作站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读