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背投广告代码的完善
Apr 08 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
HTML中的setCapture和releaseCapture使用介绍
Mar 21 Javascript
使用jQuery validate 验证注册表单实例演示
Mar 25 Javascript
JS去掉第一个字符和最后一个字符的实现代码
Feb 20 Javascript
Bootstrap组件(一)之菜单
May 11 Javascript
jQuery深拷贝Json对象简单示例
Jul 06 Javascript
React组件生命周期详解
Jul 03 Javascript
微信小程序模版渲染详解
Jan 26 Javascript
vue2中使用less简易教程
Mar 27 Javascript
layui的面包屑或者表单不显示的解决方法
Sep 05 Javascript
js实现贪吃蛇游戏(简易版)
Sep 29 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
基于文本的搜索
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php 解压rar文件及zip文件的方法
2014/05/05 PHP
PHP的全局错误处理详解
2016/04/25 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
Python strip lstrip rstrip使用方法
2008/09/06 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
django用户登录验证的完整示例代码
2019/07/21 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
python统计字符的个数代码实例
2020/02/07 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
俄罗斯的精英皮具:Wittchen
2018/01/29 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
一些PHP的面试题
2015/05/06 面试题
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
《青蛙看海》教学反思
2014/04/23 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
质量负责人任命书
2014/06/06 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
七年级作文之冬景
2019/11/07 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
Python 读取千万级数据自动写入 MySQL 数据库
2022/06/28 Python