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 相关文章推荐
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
Feb 22 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
Mar 18 Javascript
js获取下拉列表的值和元素个数示例
May 07 Javascript
jQuery实现防止提交按钮被双击的方法
Mar 24 Javascript
谈谈JavaScript的New关键字
Aug 26 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
Mar 21 Javascript
iOS + node.js使用Socket.IO框架进行实时通信示例
Apr 14 Javascript
Vue.js框架路由使用方法实例详解
Aug 25 Javascript
js中的闭包实例展示
Nov 01 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
微信小程序vant弹窗组件的实现方式
Feb 21 Javascript
原生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
PHP 面向对象实现代码
2009/11/11 PHP
php计算十二星座的函数代码
2012/08/21 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
Thinkphp和Bootstrap结合打造个性的分页样式(推荐)
2016/08/01 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
2018/10/26 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
python实现PID算法及测试的例子
2019/08/08 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
Pytorch之finetune使用详解
2020/01/18 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
用python批量下载apk
2020/12/29 Python
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
《锄禾》教学反思
2014/04/08 职场文书
优秀实习生主要事迹
2014/05/29 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
介绍信的写法
2015/01/31 职场文书
校本培训个人总结
2015/02/28 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
python中pycryto实现数据加密
2022/04/29 Python