javascript实现拖拽碰撞检测


Posted in Javascript onMarch 12, 2020

本文实例为大家分享了javascript实现拖拽碰撞检测的具体代码,供大家参考,具体内容如下

拖拽碰撞检测碰撞改变颜色

css:

<style>
    .div1{width: 100px;height: 100px;background: pink;position: absolute;}
    .div2{
     width: 150px;height: 150px;background: gray;position: absolute;
     top: 35%;
     left: 35%;
    }
</style>

html:

<body>
  <div class="div1"></div>
  <div class="div2"></div>
</body>

js:

<script>
    window.onload = function () {
      var oDiv = document.getElementsByTagName("div")[0];
      var oDiv2 = document.getElementsByTagName("div")[1];
      
      //1.按下 拖动
      oDiv.onmousedown = function (ev) {
        var oEvent = window.event || ev;
        //5.计算需要往回移动的距离
        //鼠标与盒子的左相对距离
        var l = oEvent.clientX - oDiv.offsetLeft;
        //鼠标与盒子的上相对距离
        var t = oEvent.clientY - oDiv.offsetTop;

        document.onmousemove = function (ev) {
          var oEvent = window.event || ev;
   //oEvent.preventDefault();
          //2.获取鼠标坐标位置
          var x = oEvent.clientX;
          var y = oEvent.clientY;
          
          //div的坐标位置
          var x1 = x - l;
          var y1 = y - t;
          
          //div2的真实宽度
          var oDiv2Width = oDiv2.offsetWidth;
          //div2的X坐标
          var oDiv2Left = oDiv2.offsetLeft;
          //第一个左边的临界值
          var div1L = x1 + oDiv.offsetWidth;
          //第二个左边的临界值
          var div1L2 = oDiv2Width + oDiv2Left;
          //左边的两个临界值的判断
          //第一个上面的临界值
          var div1Top = y1 + oDiv.offsetHeight;
          //第二上面的临界值
          var div1Top2 = oDiv2.offsetTop + oDiv2.offsetHeight;
          
          
          
          if(div1L>=oDiv2Left && x1 <= div1L2 && div1Top>=oDiv2.offsetTop && y1 <=div1Top2){
           oDiv2.style.backgroundColor = 'yellow';
          }else{
           oDiv2.style.backgroundColor = 'gray';
          }          
                   
          //3.设置div的位置
          oDiv.style.left = x1 + "px";
          oDiv.style.top = y1 + "px";
          //增加一个全局捕获事件
          //这个全局捕获事件 是兼容低版本的ie浏览器的
          if(oDiv.setCapture){
           oDiv.setCapture();
          }
          return false;
          //这个return false不在ie浏览器下生效
        }  
      }

      oDiv.onmouseup = function () {
        //4.取消掉移动事件
        //当我们抬起鼠标的时候 就应该释放全局捕获事件
        if(oDiv.releaseCapture){
         oDiv.releaseCapture()
        }
        document.onmousemove = null;
      }

    }
</script>

javascript实现拖拽碰撞检测

javascript实现拖拽碰撞检测

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
jQuery插件imgAreaSelect基础讲解
May 26 jQuery
vue组件实现文字居中对齐的方法
Aug 23 Javascript
Vue响应式原理深入解析及注意事项
Dec 11 Javascript
vue实现树形菜单效果
Mar 19 Javascript
使用JS获取页面上的所有标签
Oct 18 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
微信小程序发送短信验证码完整实例
Jan 07 Javascript
vue中使用vue-pdf的方法详解
Sep 05 Javascript
Vue通过懒加载提升页面响应速度
May 10 Vue.js
原生js实现碰撞检测
Mar 12 #Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
Mar 12 #Javascript
three.js利用射线Raycaster进行碰撞检测
Mar 12 #Javascript
JS实现碰撞检测效果
Mar 12 #Javascript
使用JS实现动态时钟
Mar 12 #Javascript
Vue使用vue-draggable 插件在不同列表之间拖拽功能
Mar 12 #Javascript
js实现动态时钟
Mar 12 #Javascript
You might like
将RTF格式的文件转成HTML并在网页中显示的代码
2006/10/09 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
基于JS代码实现图片在页面中旋转效果
2016/06/16 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
微信小程序页面缩放式侧滑效果的实现代码
2018/11/15 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python生成器的使用方法
2013/11/21 Python
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
详解Python装饰器
2019/03/25 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
Pycharm打开已有项目配置python环境的方法
2020/07/03 Python
css3的transition属性详解
2014/12/15 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
如何在发生故障的节点上重新安装 SQL Server
2013/03/14 面试题
拒绝黄毒毒宣传标语
2014/06/26 职场文书
相亲活动方案
2014/08/26 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
2014年技术部工作总结
2014/12/12 职场文书
现实表现材料范文
2014/12/23 职场文书
会计专业自荐信范文
2015/03/05 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
JS前端使用Canvas快速实现手势解锁特效
2022/09/23 Javascript