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 解析json的代码
Dec 16 Javascript
jquery ajax 同步异步的执行示例代码
Jun 23 Javascript
Javascript 遮罩层和加载效果代码
Aug 01 Javascript
jQuery中appendTo()方法用法实例
Jan 08 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
Bootstrap组件(一)之菜单
May 11 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
es6在react中的应用代码解析
Nov 08 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
JS实现图片居中悬浮效果
Dec 25 Javascript
微信小程序视图容器(swiper)组件创建轮播图
Jun 19 Javascript
JavaScript实现多球运动效果
Sep 07 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/06/18 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
2017/03/14 PHP
jquery 插件开发方法小结
2009/10/23 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
angularjs+bootstrap菜单的使用示例代码
2017/03/07 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
学习node.js 断言的使用详解
2019/03/18 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
python实现将元祖转换成数组的方法
2015/05/04 Python
python中 chr unichr ord函数的实例详解
2017/08/06 Python
python频繁写入文件时提速的方法
2019/06/26 Python
python 字符串常用方法汇总详解
2019/09/16 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
2020/01/04 Python
Python根据URL地址下载文件并保存至对应目录的实现
2020/11/15 Python
详解Html5 Canvas画线有毛边解决方法
2018/03/01 HTML / CSS
机械制造专业毕业生求职信
2014/03/02 职场文书
项目合作意向书范本
2014/04/01 职场文书
征兵宣传标语
2014/06/20 职场文书
学雷锋标语
2014/06/25 职场文书
教师一帮一活动总结
2014/07/08 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
初中优秀学生评语
2014/12/29 职场文书
主持人开幕词
2015/01/29 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python