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对象的property和prototype是这样一种关系
Mar 24 Javascript
jquery 操作DOM案例代码分享
Apr 05 Javascript
关于火狐(firefox)及ie下event获取的两种方法
Dec 27 Javascript
jQuery遍历对象、数组、集合实例
Nov 08 Javascript
解析JavaScript数组方法reduce
Dec 12 Javascript
Angular使用$http.jsonp发送跨站请求的方法
Mar 16 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
Jul 10 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
Aug 18 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
Jan 30 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
Vue触发input选取文件点击事件操作
Aug 07 Javascript
解决vue scoped html样式无效的问题
Oct 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
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
JS中如何判断传过来的JSON数据中是否存在某字段
2014/08/18 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
Vue响应式原理深入解析及注意事项
2017/12/11 Javascript
vue.js使用watch监听路由变化的方法
2018/07/08 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
解决Mint-ui 框架Popup和Datetime Picker组件滚动穿透的问题
2020/11/04 Javascript
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
基于python实现的百度音乐下载器python pyqt改进版(附代码)
2019/08/05 Python
pytorch 模型可视化的例子
2019/08/17 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
2020/09/20 Python
用Python进行websocket接口测试
2020/10/16 Python
深入理解css属性的选择对动画性能的影响
2016/04/20 HTML / CSS
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
大学系主任推荐信范文
2013/12/24 职场文书
开办饭店创业计划书
2013/12/28 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
青年志愿者活动总结
2014/04/26 职场文书
售后客服工作职责
2014/06/16 职场文书
质量保证书
2015/01/17 职场文书
同学联谊会邀请函
2019/06/24 职场文书
小学生必读成语故事大全:送给暑假的你们
2019/07/09 职场文书
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏