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 相关文章推荐
javascript学习笔记(八) js内置对象
Jun 19 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
JS弹出窗口的运用与技巧大全
Nov 01 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
Feb 23 Javascript
React Native 环境搭建的教程
Aug 19 Javascript
js实现input密码框显示/隐藏功能
Sep 10 Javascript
如何实现小程序tab栏下划线动画效果
May 18 Javascript
解决vue.js提交数组时出现数组下标的问题
Nov 05 Javascript
Angular之jwt令牌身份验证的实现
Feb 14 Javascript
微信小程序实现倒计时功能
Nov 19 Javascript
vue使用echarts实现折线图
Mar 21 Vue.js
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
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
js实现兼容性好的微软官网导航下拉菜单效果
2015/09/07 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
进一步理解Python中的函数编程
2015/04/13 Python
python实现机器人行走效果
2018/01/29 Python
pandas对指定列进行填充的方法
2018/04/11 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Python3如何判断三角形的类型
2020/04/12 Python
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
大学生写自荐信的技巧
2014/01/08 职场文书
小学生保护环境倡议书
2014/05/15 职场文书
2014年人力资源部工作总结
2014/11/19 职场文书
会议新闻稿
2015/07/17 职场文书
党员干部学习心得体会
2016/01/23 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
Python集合set()使用的方法详解
2022/03/18 Python
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android