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操作userdata
Apr 27 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
Dec 24 Javascript
JS案例分享之金额小写转大写
May 15 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
学习javascript面向对象 javascript实现继承的方式
Jan 04 Javascript
移动端界面的适配
Jan 11 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
node使用promise替代回调函数
May 07 Javascript
Vue实现按钮旋转和移动位置的实例代码
Aug 09 Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 Javascript
浅谈react路由传参的几种方式
Mar 23 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开发大型项目的一点经验
2006/10/09 PHP
一个php作的文本留言本的例子(二)
2006/10/09 PHP
PHP脚本数据库功能详解(下)
2006/10/09 PHP
初识PHP
2014/09/28 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
jquery获取checkbox的值并post提交
2015/01/14 Javascript
jquery读写cookie操作实例分析
2015/12/24 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
基于hover的用法实例(推荐)
2017/07/04 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
2017/10/09 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
Python实现字符串匹配算法代码示例
2017/12/05 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python中类的属性和方法介绍
2018/11/27 Python
python itchat实现调用微信接口的第三方模块方法
2019/06/11 Python
python实现图像拼接
2020/03/05 Python
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
比较基础的php面试题及答案-填空题
2014/04/26 面试题
感恩节活动方案
2014/01/27 职场文书
会计岗位职责范本
2014/03/07 职场文书
股东合作协议书
2014/09/12 职场文书
2014年城管工作总结
2014/11/20 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
停车场管理制度范本
2015/08/05 职场文书
三好学生竞选稿
2015/11/21 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS