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学习笔记9 prototype封装继承
Jan 11 Javascript
鼠标事件延时切换插件
Mar 12 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
Vue中父组件向子组件通信的方法
Jul 11 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
Jul 12 Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
Feb 08 Javascript
Node.Js生成比特币地址代码解析
Apr 21 Javascript
基于element-ui的rules中正则表达式
Sep 04 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
Apr 10 jQuery
JS实现给数组对象排序的方法分析
Jun 24 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程序?
2006/12/08 PHP
ThinkPHP中__initialize()和类的构造函数__construct()用法分析
2014/11/29 PHP
PHP自定义图片缩放函数实现等比例不失真缩放的方法
2016/08/19 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
php进程daemon化的正确实现方法
2018/09/06 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
jquery 图片Silhouette Fadeins渐显效果
2010/02/07 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
利用js制作html table分页示例(js实现分页)
2014/04/25 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
35个最好用的Vue开源库(史上最全)
2019/01/03 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
python实现控制台打印的方法
2019/01/12 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
python程序如何进行保存
2020/07/03 Python
Python如何对齐字符串
2020/07/30 Python
numba提升python运行速度的实例方法
2021/01/25 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
数百万免费的图形资源:Freepik
2020/09/21 全球购物
自考毕业自我鉴定范文
2013/10/27 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
读群众路线心得体会
2014/03/07 职场文书
村干部培训班主持词
2014/03/28 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS