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 相关文章推荐
用js模拟JQuery的show与hide动画函数代码
Sep 20 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
Jun 09 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
Nov 08 Javascript
输入框过滤非数字的js代码
Sep 18 Javascript
简单谈谈node.js 版本控制 nvm和 n
Oct 15 Javascript
基于javascript实现图片懒加载
Jan 05 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
js多功能分页组件layPage使用方法详解
May 19 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
Nov 17 Javascript
js中事件对象和事件委托的介绍
Jan 21 Javascript
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
layui中的switch开关实现方法
Sep 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
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
php 二维数组快速排序算法的实现代码
2017/10/17 PHP
详解php curl带有csrf-token验证模拟提交方法
2018/04/18 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
JavaScript禁止复制与粘贴的实现代码
2016/05/16 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
2016/12/24 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
vue select选择框数据变化监听方法
2018/08/24 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
wxPython学习之主框架实例
2014/09/28 Python
python3中的md5加密实例
2018/05/29 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Django shell调试models输出的SQL语句方法
2019/08/29 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
在主流系统之上安装Pygame的方法
2020/05/20 Python
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
《蚕姑娘》教学反思
2014/04/15 职场文书
国庆节标语大全
2014/10/08 职场文书
2014年团支书工作总结
2014/11/14 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
MySQL数据库查询之多表查询总结
2022/08/05 MySQL