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 相关文章推荐
fix-ie5.js扩展在IE5下不能使用的几个方法
Aug 20 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
input标签内容改变的触发事件介绍
Jun 18 Javascript
jQuery实现友好的轮播图片特效
Jan 12 Javascript
利用CSS3在Angular中实现动画
Jan 15 Javascript
Javascript中Date类型和Math类型详解
Feb 27 Javascript
VUEJS实战之构建基础并渲染出列表(1)
Jun 13 Javascript
jQuery自制提示框tooltip改进版
Aug 01 Javascript
功能强大的jquery.validate表单验证插件
Nov 07 Javascript
AngularJS使用ng-app自动加载bootstrap框架问题分析
Jan 04 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
JavaScript设计模式之策略模式实例
2014/10/10 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
2016/06/16 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
javascrit中undefined和null的区别详解
2019/04/07 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
js实现蒙版效果
2020/01/11 Javascript
vue-cli3单页构建大型项目方案
2020/04/07 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
详解JavaScript 中的批处理和缓存
2020/11/19 Javascript
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python统计字符的个数代码实例
2020/02/07 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
欧洲最大的球衣网上商店:Kitbag
2017/11/11 全球购物
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
Vero Moda西班牙官方购物网站:丹麦BESTSELLER旗下知名女装品牌
2018/04/27 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
人事部专员岗位职责
2014/03/04 职场文书
2014植树节活动总结
2014/03/11 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
校友会致辞
2015/07/30 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
Java实现聊天机器人完善版
2021/07/04 Java/Android