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 相关文章推荐
js 判断 enter 事件
Feb 12 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
浅谈javascript的原型继承
Jul 25 Javascript
jquery实现先淡出再折叠收起的动画效果
Aug 07 Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 Javascript
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
Apr 01 jQuery
如何在postman中添加cookie信息步骤解析
Jun 30 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
Aug 10 Javascript
JavaScript实例 ODO List分析
Jan 22 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中读写文件与读写数据库的效率比较分享
2013/10/19 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
2013/08/08 Javascript
js获取或设置当前窗口url参数的小例子
2013/10/14 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
vue中如何使用ztree
2018/02/06 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
Vue指令指令大全
2019/02/09 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
python开发之thread实现布朗运动的方法
2015/11/11 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python datetime中strptime用法详解
2019/08/29 Python
通过代码实例了解Python sys模块
2020/09/14 Python
学院书画协会部门岗位职责
2013/12/01 职场文书
校园之声广播稿
2014/01/31 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
捐助倡议书
2015/01/19 职场文书
听证通知书
2015/04/24 职场文书
工作自我评价范文
2019/03/21 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书