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 相关文章推荐
JQuery中的$.getJSON 使用说明
Mar 10 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
May 26 Javascript
JS关于刷新页面的相关总结
May 09 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
vue基于element的区间选择组件
Sep 07 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
js数组去重的方法总结
Jan 18 Javascript
vue-openlayers实现地图坐标弹框效果
Sep 24 Javascript
Vue2.0搭建脚手架
Mar 13 Vue.js
Node实现搜索框进行模糊查询
React + Threejs + Swiper 实现全景图效果的完整代码
Vue实现tab导航栏并支持左右滑动功能
React列表栏及购物车组件使用详解
React如何创建组件
Jun 27 #Javascript
Vue3.0写自定义指令的简单步骤记录
关于JavaScript回调函数的深入理解
Jun 27 #Javascript
You might like
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
支持数组的ADDSLASHES的php函数
2010/02/16 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
php获取远程文件内容的函数
2015/11/02 PHP
php实现贪吃蛇小游戏
2016/07/26 PHP
Javascript 面向对象 继承
2010/05/13 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
2016/01/06 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
NodeJS父进程与子进程资源共享原理与实现方法
2018/03/16 NodeJs
LayUI表格批量删除方法
2018/08/15 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
[05:03]2018DOTA2亚洲邀请赛主赛事首日回顾
2018/04/04 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
python入门教程之识别验证码
2017/03/04 Python
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
python实现拼图小游戏
2020/02/22 Python
美国一家专业的太阳镜网上零售商:Solstice太阳镜
2016/07/25 全球购物
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
药剂专业自荐书
2014/06/20 职场文书
货款欠条范本
2015/07/03 职场文书
四年级作文之植物
2019/09/20 职场文书
python opencv旋转图片的使用方法
2021/06/04 Python
Python中的套接字编程是什么?
2021/06/21 Python
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python