盒子拖拽效果,原生js实现

news2025/3/1 14:18:17

原生js实现拖拽效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>hello2</title>
    
</head>
<style>
    #box1{
    position: absolute;
    width: 100px;
    height: 100px;
    background: blue;
    cursor: move;
    }
</style>
<body>
   
     <div id="box1">
   
     </div>   
    
</body>
</html>
<script type="text/javaScript">
    //     拖拽box1元素
    // 拖拽的流程
    // 1.当鼠标在被拖拽元素上按下时,开始拖拽 onmousedown
    // 2。当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
    // 3。当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
    window.onload = function(){
        
        //获取box1
        var box1 = document.getElementById("box1");
        //为box1绑定一个鼠标按下事件/
        //当鼠标在被拖拽元素上按下时,开始拖拽 onmousedown
        box1.onmousedown = function(event){
        
            //设置box1捕获所有鼠标按下的事件
            // if(box1.setCapture){
            //     box1.setCapture();
            // }
            // box1.setCapture && box1.setCapture();
             var event = event || window.event;
            //div的偏移量 鼠标clentX- 元素.offsetLeft
            //div的偏移量 鼠标.clentY - 元素.offsetTop
            var ol = event.clientX - box1.offsetLeft;
            var ot = event.clientY - box1.offsetTop;
            
            //为document绑定一个onmousemove事件
            document.onmousemove = function(event){
                var event = event  || window.event;
                //当鼠标移动时被拖拽元素跟随鼠标移动 onmousemove
                //获取鼠标的坐标
                var left = event.clientX -ol;
                var top = event.clientY- ot;
                //修改box1的位置
                box1.style.left = left+"px";
                box1.style.top = top+"px";
                
            };
            //为元素绑定一个鼠标松开事件
            document.onmouseup = function(event){
                //当鼠标松开时,被拖拽元素固定在当前位置 onmouseup
                //取消document的onmousemove事件
                this.onmousemove = null;
                //取消document的onmouseup事件
                this.onmouseup = null;
                console.log("nihao");
                //当鼠标松开时,取消对事件的捕获
                // box1.releaseCapture();
                // box1.releasePointerCapture && box1.releasePointerCapture();
            };
            //当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容此时会导致拖拽功能的异常,这个是浏览器提供的默认行为,如果不希望发生这个行为,则可以通过return false来取消默认行为
            //不这对IE8不起作用
            return false;
        };
    };
    
</script>

效果图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/404840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

keychron机械键盘使用感受

最近入手了一个Keychron无线机械键盘&#xff0c;跟mac本搭配起来使用&#xff0c;体验非常好。记录下使用的感受。 包装 包装很结实&#xff0c;拆开快递盒后&#xff0c;快递盒里有充气袋包裹着键盘盒&#xff0c;键盘盒塑料薄膜封装&#xff0c;没有一点的磕碰。 拆封 不仅外…

运动蓝牙耳机什么牌子好,比较好的运动蓝牙耳机推荐

现在市面上的运动蓝牙耳机越来越多&#xff0c;在选择耳机的时候应该如何入手呢&#xff1f;最重要的是需要按照自己的需求来选择&#xff0c;但在耳机的配置上不能忽视的是耳机的防水等级&#xff0c;运动耳机对防水等级的要求更高&#xff0c;这样能够更好地防御汗水浸湿耳机…

【汇编】四、内存访问(一只 Assember 的成长史)

嗨~你好呀&#xff01; 我是一名初二学生&#xff0c;热爱计算机&#xff0c;码龄两年。最近开始学习汇编&#xff0c;希望通过 Blog 的形式记录下自己的学习过程&#xff0c;也和更多人分享。 上篇系列文章链接&#xff1a;【汇编】三、寄存器&#xff08;一只 Assember 的成…

mgre实验

实验思路 1、首先根据拓扑结构合理分配IP地址&#xff0c;并对各个路由器的IP地址和R5环回接口的IP地址进行配置。 2、让私网中的边界路由器对ISP路由器做缺省路由。 3、根据实验要求&#xff0c;对需要配置不同类型认证的路由器进行认证配置&#xff0c;和需要不同封装的协议…

Git的基本使用以及上传到GitHub

GIT的基本使用一、安装并配置GIT二、Git的基本操作三、使用GIT上传至GitHub四、Git分支一、安装并配置GIT 1.安装GIT连接 GIT安装包链接 2.打开GIT 鼠标右键点击Git Bash Here 安装完 Git 之后&#xff0c;第一件事就是设置自己的用户名和邮件地址。因为通过 Git 对项目进行…

Spark-序列化、依赖关系、持久化

序列化 闭包检查 序列化方法和属性 依赖关系 RDD 血缘关系 RDD 窄依赖 RDD 宽依赖 RDD 任务划分 RDD 持久化 RDD Cache 缓存 RDD CheckPoint 检查点 缓存和检查点区别 序列化 闭包检查 从计算的角度, 算子以外的代码都是在 Driver 端执行, 算子里面的代码都是在 E…

Lesson 9.3 集成算法的参数空间与网格优化和使用网格搜索在随机森林上进行调参

文章目录一、集成算法的参数空间与网格优化1. 学习曲线2. 决策树对象 Tree二、使用网格搜索在随机森林上进行调参1. 建立 benchmark2. 创建参数空间3. 实例化用于搜索的评估器、交叉验证评估器与网格搜索评估器4. 训练网格搜索评估器5. 查看结果在开始学习之前&#xff0c;先导…

拆解DKD loss (建议读完论文哈)

论文链接&#xff1a;https://arxiv.org/abs/2203.08679def dkd_loss(logits_student, logits_teacher, target, alpha, beta, temperature):gt_mask _get_gt_mask(logits_student, target) # 获取掩码other_mask _get_other_mask(logits_student, target)pred_student …

自动化测试——数据驱动测试

数据驱动测试 在实际的测试过程中&#xff0c;我们会发现好几组用例都是相同的操作步骤&#xff0c;只是测试数据的不同&#xff0c;而我们往往需要编写多次用例来进行测试&#xff0c;此时我们可以利用数据驱动测试来简化该种操作。 参数化&#xff1a; 输入数据的不同从而产…

一篇文章教你彻底理解ThreadLocal

文章目录ThreadLocal是什么&#xff1f;ThreadLocal如何使用&#xff1f;特别注意ThreadLocal数据存储存取ThreadLocal原理解析Thread.threadLocals原理Thread.inheritableThreadLocals原理ThreadLocal内存泄漏内存泄漏原因对内存泄漏的补救用完就要删除&#xff08;最终解决&a…

统一流程平台----执行流应用

在flowable平台中&#xff0c;执行流&#xff08;Execution&#xff09;完成了流程实例/执行分支/任务/子流程之间关系的建立。flowable整个体系以执行流为基础&#xff0c;完成上下游数据的关联&#xff0c;让bpmn图纸能按照约定进行流转&#xff0c;形成了第一层概念。1.执行…

vue3实战项目安装各种爆时候报错问题和解决

文章目录1.安装:npm install -g sass报错问题1.npm install失败,报错如下引入使用echarts 相关问题1. vue3中npm install echarts --save报错但是这个地方有报提示,问题待解决...........1.安装:npm install -g sass 注释: 多种安装方法 2.vue中局部引用,也可以设置全局css文件…

C++:vector和list的迭代器区别和常见迭代器失效问题

迭代器常见问题的汇总vector迭代器和list迭代器的使用vector迭代器list迭代器vector迭代器失效问题list迭代器失效问题vector和list的区别vector迭代器和list迭代器的使用 学习C&#xff0c;使用迭代器和了解迭代器失效的原因是每个初学者都需要掌握的&#xff0c;接下来我们就…

C++代码格式化-clang-format

文章目录前言c|vscode|clang-formatc|vs|clang-formatc|.clang-format其他附录Visual Studio格式在vs和vscode中不同无法从繁体切换到简体我的vs code配置前言 一个项目中的代码&#xff0c;可能来自不同的地方。不管是多人合作&#xff0c;还是ctrl-c/ctrl-v&#xff0c;都有…

剑指offer JZ6 从尾到头打印链表

Java 剑指offer JZ6 从尾到头打印链表 文章目录Java 剑指offer JZ6 从尾到头打印链表一、题目描述二、递归写法三、栈方法使用Java的递归和栈解决从尾到头打印链表的问题 一、题目描述 输入一个链表的头节点&#xff0c;按链表从尾到头的顺序返回每个节点的值&#xff08;用数组…

spring cloud @RefreshScope 刷新机制

在学习 nacos 的配置修改发现用到了 RefreshScope 注解&#xff0c;将 spring boot 的日志调整如下logging:level:com:alibaba:cloud: debugorg:springframework:context: debugcloud: debug调用 nacos 的配置修改&#xff0c;看到如下信息2023-03-10 15:48:15.332 INFO [com.a…

三天吃透MySQL面试八股文

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

MGRE综合实验

实验拓扑及相关要求&#xff1a; IP地址配置&#xff1a; ip规划如该拓扑上可视 缺省路由&#xff1a; [r1]ip route-static 0.0.0.0 0 15.0.0.2 [r2]ip route-static 0.0.0.0 0 25.0.0.2 [r3]ip route-static 0.0.0.0 0 35.0.0.2 [r4]ip route-static 0.0.0.0 0 45.0.0.2 公…

Java的二叉树、红黑树、B+树

数组和链表是常用的数据结构&#xff0c;数组虽然查找快&#xff08;有序数组可以通过二分法查找&#xff09;&#xff0c;但是插入和删除是比较慢的&#xff1b;而链表&#xff0c;插入和删除很快&#xff08;只需要改变一些引用值&#xff09;&#xff0c;但是查找就很慢&…

游戏引擎开发总结:序列化系统

序列化需要准备什么&#xff1f;首先&#xff0c;我们需要一个被序列化类实现序列化函数&#xff0c;以及序列化库。准备我的序列化库是Yaml-cpp&#xff0c;序列话函数就命名为Serialize&#xff0c;另外我们不需要关心组件类型是具体是什么&#xff0c;所以我这边使用多态&am…