javascript拖曳互换div的位置实现示例


Posted in Javascript onJune 28, 2021

1 实现原理

利用dom元素的dragstart/ondragover/ondrop事件完成,在拖曳开始的时候获取到拖曳元素,然后允许拖动,最后鼠标抬起后放到新的位置;这里用到了event.preventDefault()方法,很多人可能比较疑惑,这里简单介绍一下

event.preventDefault() :该方法是让浏览器不要执行与事件关联的默认动作

我们在dragover事件中使用,因为dragover关联的默认动作是阻止将数据或者元素放置到其他元素中;所以需要通过event.preventDefault()禁止该默认事件,这样就可以允许拖动元素到新的位置了

<!-- div拖曳调换顺序 适用gis中切换图层顺序-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title></title>
  <style type="text/css">
        body{
            display: flex;
            padding: 100px;
            flex-direction: column;
        }
        div{
            width: 100px;
            height: 100px;
            text-align: center;
        }
    </style>
 
</head>
<body>
   <div style="background-color: red;width:200px;height:200px;" draggable="true">红色</div>
    <div style="background-color: green;width:100px" draggable="true">绿色</div>
    <div style="background-color: blue;" draggable="true">蓝色</div>
</body>
<script type="text/javascript">
    let div =document.getElementsByTagName("div");
    let container=null;
    // 遍历给每一个div绑定 dragstart dragover以及drop事件
    for(let i=0;i<div.length;i++){
        div[i].ondragstart=function(){  
            container=this
        }
        div[i].ondragover=function(){
            event.preventDefault();
        }
        div[i].ondrop=function(){
            debugger;
            if(container!=null&&container!=this){
                // 具体思路跟变量值互换一样
                let temp=document.createElement("div");
                document.body.replaceChild(temp,this);   //用新建的div占据目的位置
                document.body.replaceChild(this,container);// 目的div放置在起始位置
                document.body.replaceChild(container,temp)  // 起始div放置在目的位置
                debugger; 
                console.log('执行业务逻辑')
            }
        }
    }
</script>
</html>

javascript拖曳互换div的位置实现示例

到此这篇关于javascript拖曳互换div的位置实现示例的文章就介绍到这了,更多相关javascript拖曳互换div内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript DOM 添加事件
Feb 14 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
jQuery设置div一直在页面顶部显示的方法
Oct 24 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
js生成的验证码的实现与技术分析
Sep 17 Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 Javascript
JavaScript运动框架 多物体任意值运动(三)
May 17 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
vue的安装及element组件的安装方法
Mar 09 Javascript
React全家桶环境搭建过程详解
May 18 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
Oct 12 Javascript
ES6基础之 Promise 对象用法实例详解
Aug 22 Javascript
Node实现搜索框进行模糊查询
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
You might like
PHP5 操作MySQL数据库基础代码
2009/09/29 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
JavaScript资源预加载组件和滑屏组件的使用推荐
2016/03/10 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
vue.js+element-ui动态配置菜单的实例
2018/09/07 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
nodejs通过钉钉群机器人推送消息的实现代码
2019/05/05 NodeJs
vue中 this.$set的用法详解
2019/09/06 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
Python实现身份证号码解析
2015/09/01 Python
Python 加密的实例详解
2017/10/09 Python
Sanic框架路由用法实例分析
2018/07/16 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
浅析Python的命名空间与作用域
2020/11/25 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
电大学习个人自我评价范文
2013/10/04 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
社区助残日活动总结
2014/08/29 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
阿里云 Windows server 2019 配置FTP
2022/04/28 Servers
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang