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基本语法分析说明
Jun 15 Javascript
xml 封装与解析(javascript和C#中)
Jul 26 Javascript
jQuery validate 中文API 附validate.js中文api手册
Jul 31 Javascript
offsetHeight在OnLoad中获取为0的现象
Jul 22 Javascript
jQuery焦点图切换简易插件制作过程全纪录
Aug 27 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
js浏览器html5表单验证
Oct 17 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
js实现前端界面导航栏下拉列表
Aug 27 Javascript
微信小程序 WeUI扩展组件库的入门教程
Apr 21 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
JavaScript触发器详解
2007/03/10 Javascript
XML+XSL 与 HTML 两种方案的结合
2007/04/22 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
基于javascript实现随机颜色变化效果
2016/01/14 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
ES6基础之解构赋值(destructuring assignment)
2019/02/21 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
Python解惑之整数比较详解
2017/04/24 Python
浅谈python可视化包Bokeh
2018/02/07 Python
Python多线程扫描端口代码示例
2018/02/09 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python实现根据文件格式分类
2019/10/31 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
django跳转页面传参的实现
2020/09/17 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
什么是Smart Navigation?
2016/07/03 面试题
研讨会主持词
2014/04/02 职场文书
宣传普通话标语
2014/06/27 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
Java 异步任务计算FutureTask
2022/04/28 Java/Android