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 相关文章推荐
50个比较实用jQuery代码段
Sep 18 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
jquery实现瀑布流效果分享
Mar 26 Javascript
纯js实现仿QQ邮箱弹出确认框
Apr 29 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
修改js confirm alert 提示框文字的简单实例
Jun 10 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
Mar 03 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 Javascript
详解vue如何使用rules对表单字段进行校验
Oct 17 Javascript
Vue实现拖放排序功能的实例代码
Jul 08 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
php发送与接收流文件的方法
2015/02/11 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
DOMAssitant最新版 DOMAssistant 2.5发布
2007/12/25 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
微信小程序获取手机网络状态的方法【附源码下载】
2017/12/08 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
vue.js过滤器+ajax实现事件监听及后台php数据交互实例
2018/05/22 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
实例讲解Python中SocketServer模块处理网络请求的用法
2016/06/28 Python
Linux下python3.7.0安装教程
2018/07/30 Python
python删除字符串中指定字符的方法
2018/08/13 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python中如何使用虚拟环境
2020/10/14 Python
python通过cython加密代码
2020/12/11 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
行政内勤岗位职责
2014/04/07 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
财产分割协议书范本
2014/11/03 职场文书
2014年大堂经理工作总结
2014/11/21 职场文书
运动与健康自我评价
2015/03/09 职场文书
保研导师推荐信
2015/03/25 职场文书