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 相关文章推荐
js arguments.callee的应用代码
May 07 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
Aug 08 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 Javascript
如何制作幻灯片(代码分享)
Jan 06 Javascript
JS和Canvas实现图片的预览压缩和上传功能
Mar 30 Javascript
layui 优化button按钮和弹出框的方法
Aug 15 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
手把手教你使用TypeScript开发Node.js应用
May 06 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 Javascript
微信小程序开发实现消息推送
Nov 18 Javascript
vue.js循环radio的实例
Nov 07 Javascript
Node实现搜索框进行模糊查询
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
You might like
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
使用upstart把nodejs应用封装为系统服务实例
2014/06/01 NodeJs
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
vue实现图书管理demo详解
2017/10/17 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
解决vue单页面修改样式无法覆盖问题
2019/08/05 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
在Python中使用Neo4j的方法
2019/03/14 Python
python实现AES加密和解密
2019/03/27 Python
python的re模块使用方法详解
2019/07/26 Python
python 默认参数相关知识详解
2019/09/18 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Python-openCV开运算实例
2020/07/05 Python
python中yield的用法详解
2021/01/13 Python
浅析HTML5 Landmark
2020/09/11 HTML / CSS
英语教育专业毕业生求职信
2014/08/28 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
支行行长竞聘报告
2014/11/06 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书