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 相关文章推荐
javascripit实现密码强度检测代码分享
Dec 12 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
javascript带回调函数的异步脚本载入方法实例分析
Jul 02 Javascript
JavaScript实现自动消除按钮功能的方法
Aug 05 Javascript
jquery validate.js表单验证入门实例(附源码)
Nov 10 Javascript
javaScript基础详解
Jan 19 Javascript
js实现简易聊天对话框
Aug 17 Javascript
vue中echarts3.0自适应的方法
Feb 26 Javascript
Vue slot用法(小结)
Oct 22 Javascript
详解javascript对数组和json数组的操作
Apr 15 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
Aug 18 Javascript
Vue router安装及使用方法解析
Dec 02 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
全国FM电台频率大全 - 6 辽宁省
2020/03/11 无线电
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
Adapter适配器模式在JavaScript设计模式编程中的运用分析
2016/05/18 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
js编写简单的计时器功能
2017/07/15 Javascript
layer插件select选中默认值的方法
2018/08/14 Javascript
vue中的自定义分页插件组件的示例
2018/08/18 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
vue使用高德地图根据坐标定位点的实现代码
2019/08/22 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
使用python实现baidu hi自动登录的代码
2013/02/10 Python
解密Python中的描述符(descriptor)
2015/06/03 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
西班牙太阳镜品牌:Hawkers
2018/03/11 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
业务主管岗位职责
2013/11/20 职场文书
大学生如何写自荐信
2014/01/08 职场文书
幼儿园老师寄语
2014/04/03 职场文书
幼儿园百日安全活动总结
2015/05/07 职场文书
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers