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 相关文章推荐
javascript replace方法与正则表达式
Feb 19 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
两个select多选模式的选项相互移动(示例代码)
Jan 11 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
Vue打包部署到Nginx时,css样式不生效的解决方式
Aug 03 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中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP修改session_id示例代码
2014/01/08 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
PHP实现上传多文件示例代码
2017/02/20 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
JavaScript 编程引入命名空间的方法与代码
2007/08/13 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
ES6 class的应用实例分析
2019/06/27 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python THREADING模块中的JOIN()方法深入理解
2015/02/18 Python
python学习入门细节知识点
2018/03/29 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
python组合无重复三位数的实例
2018/11/13 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
python能做哪些生活有趣的事情
2020/09/09 Python
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
彪马法国官网:PUMA法国
2019/12/15 全球购物
分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
2014/07/16 面试题
一些Solaris面试题
2015/12/22 面试题
家长评语和期望
2014/02/10 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
演讲开场白和结束语
2015/05/29 职场文书
三好学生竞选稿范文
2019/08/21 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers