JS实现拖拽元素时与另一元素碰撞检测


Posted in Javascript onAugust 27, 2020

本文给大家分享一个用原生JS实现拖拽元素时与另个一元素碰撞检测的小Demo,效果如下:

JS实现拖拽元素时与另一元素碰撞检测

实现代码如下, 欢迎大家复制粘贴。

<!DOCTYPE html>
<html>
 
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>原生JS实现拖拽元素时与另个一元素碰撞检测</title>
  <style>
    #div1 {
      width: 100px;
      height: 100px;
      background: red;
      position: absolute;
      z-index: 2;
    }
 
    #div2 {
      width: 100px;
      height: 100px;
      background: yellow;
      position: absolute;
      left: 230px;
      top: 220px;
      z-index: 1;
    }
  </style>
  <script>
    window.onload = function () {
      var oDiv = document.getElementById('div1');
      var oDiv2 = document.getElementById('div2');
      // 鼠标按下时
      oDiv.onmousedown = function (ev) {
 
        var oEvent = ev || event;
        var disX = oEvent.clientX - oDiv.offsetLeft;
        var disY = oEvent.clientY - oDiv.offsetTop;
        // 鼠标移动时
        document.onmousemove = function (ev) {
 
          var oEvent = ev || event;
 
          oDiv.style.left = oEvent.clientX - disX + 'px';
          oDiv.style.top = oEvent.clientY - disY + 'px';
 
          var l1 = oDiv.offsetLeft;
          var r1 = oDiv.offsetLeft + oDiv.offsetWidth;
          var t1 = oDiv.offsetTop;
          var b1 = oDiv.offsetTop + oDiv.offsetHeight;
 
          var l2 = oDiv2.offsetLeft;
          var r2 = oDiv2.offsetLeft + oDiv2.offsetWidth;
          var t2 = oDiv2.offsetTop;
          var b2 = oDiv2.offsetTop + oDiv2.offsetHeight;
 
          // 碰撞检测的规则
          if (r1 < l2 || l1 > r2 || b1 < t2 || t1 > b2) {
            // 如果没有碰到
            oDiv2.style.background = 'yellow';
 
          } else {
            // 如果碰到了
            oDiv2.style.background = 'green';
          }
        };
        // 鼠标抬起时
        document.onmouseup = function () {
 
          document.onmousemove = null;
          document.onmouseup = null;
        };
      };
    };
  </script>
</head>
 
<body>
  <div id="div1"></div>
  <div id="div2"></div>
</body>
 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。 

Javascript 相关文章推荐
Prototype Template对象 学习
Jul 19 Javascript
Jquery ajaxsubmit上传图片实现代码
Nov 04 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
jquery中的事件处理详细介绍
Jun 24 Javascript
js 走马灯简单实例
Nov 21 Javascript
node.js中的require使用详解
Dec 15 Javascript
js实现精确到秒的倒计时效果
May 29 Javascript
JS简单生成由字母数字组合随机字符串示例
May 25 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
layui switch 开关监听 弹出确定状态转换的例子
Sep 21 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
vue下canvas裁剪图片实例讲解
Apr 16 Javascript
js实现QQ邮箱邮件拖拽删除功能
Aug 27 #Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 #Javascript
javascript操作向表格中动态加载数据
Aug 27 #Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 #Javascript
js实现批量删除功能
Aug 27 #Javascript
js利用拖放实现添加删除
Aug 27 #Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 #jQuery
You might like
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
php动态生成JavaScript代码
2009/03/09 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
php实现singleton()单例模式实例
2014/11/06 PHP
Laravel日志用法详解
2016/10/09 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
在javascript中如何得到中英文混合字符串的长度
2014/01/17 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
Python urlopen()函数 示例分享
2014/06/12 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
wxPython实现带颜色的进度条
2019/11/19 Python
Python实现播放和录制声音的功能
2020/08/12 Python
HTML5制作表格样式
2016/11/15 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
质量工程师岗位职责
2013/11/16 职场文书
大学生求职推荐信
2013/11/27 职场文书
毕业生自荐书
2013/12/18 职场文书
会计学自我鉴定
2014/02/06 职场文书
应届毕业生自荐信
2014/05/28 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
二年级语文下册复习计划
2015/01/19 职场文书
南湾猴岛导游词
2015/02/09 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
简单聊一聊SQL注入及防止SQL注入
2022/03/23 MySQL