JS HTML5实现拖拽移动列表效果


Posted in Javascript onAugust 27, 2020

练习HTML5中的拖放API,实现列表拖拽移动!参考文章:JS HTML5拖拽上传图片预览

HTML5拖拽移动列表实现思路:

 1.循环设置每个子项的draggable属性,以及设置拖动标记(不会多个或全部子项都移动)
 2.每次进入投放区,则检测时候有拖放标记,有则添加dom元素,以此类推

另一种实现思路是:可以利用拖放中DataTransfer对象作为属性,用setData()和getData()方法传递每个拖动的子项的id等数据,找到指定的子项进行移动….待实验。。。

HTML:

//空列表
<div id="box"></div>
//内容列表
<ul id="con">
 <li>第1项</li>
 <li>第2项</li>
 <li>第3项</li>
 <li>第4项</li>
</ul>

JS:

<script>
 function $(id) {
 return document.getElementById(id);
 }
 var con = $("con");
 var box = $("box");
 var liDoms = document.getElementsByTagName("li");
 var i = 0,
 len = liDoms.length;
 //循环设置每个子项的draggable属性,以及时候拖动标记
 for (; i < len; i += 1) {
 liDoms[i].draggable = 'true';
 liDoms[i].flag = false;
 liDoms[i].ondragstart = function() {
 this.flag = true;
 };
 liDoms[i].ondragend = function() {
 this.flag = false;
 };
 }

 //投放区事件
 $("box").ondragenter = function(e) {
 e.preventDefault();
 console.log('进入');

 };
 $("box").ondragover = function(e) {
 e.preventDefault();
 console.log('移动');
 };
 $("box").ondragleave = function(e) {
 e.preventDefault();
 console.log('离开');
 };
 $("box").ondrop = function(e) {

 e.preventDefault();
 for (var i = 0; i < liDoms.length; i += 1) {

 if (liDoms[i].flag) {
 box.appendChild(liDoms[i]);
 }
 }

 console.log('成功');

 };
 //投放区事件
 $("con").ondragenter = function(e) {
 e.preventDefault();
 console.log('进入');

 };
 $("con").ondragover = function(e) {
 e.preventDefault();
 console.log('移动');
 };
 $("con").ondragleave = function(e) {
 e.preventDefault();
 console.log('离开');
 };
 $("con").ondrop = function(e) {

 e.preventDefault();
 for (var i = 0; i < liDoms.length; i += 1) {

 if (liDoms[i].flag) { //此时获得是时box对象下li,而不是原容器的li了
 $("con").appendChild(liDoms[i]);
 }
 }

 console.log('成功');

 };
 </script>

效果图:

JS HTML5实现拖拽移动列表效果

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
May 02 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
Apr 28 Javascript
跟我学习javascript的闭包
Nov 16 Javascript
jquery.cookie实现的客户端购物车操作实例
Dec 24 Javascript
BootStrap智能表单demo示例详解
Jun 13 Javascript
javascript ASCII和Hex互转的实现方法
Dec 27 Javascript
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 Javascript
JS实现倒序输出的几种常用方法示例
Apr 13 Javascript
使用RxJS更优雅地进行定时请求详析
Jun 02 Javascript
JavaScript数组去重实现方法小结
Jan 17 Javascript
Vue实现图书管理案例
Jan 20 Vue.js
浅谈$('div a') 与$('div&gt;a')的区别
Jul 18 #Javascript
浅析JavaScript中的array数组类型系统
Jul 18 #Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 #Javascript
javascript时间差插件分享
Jul 18 #Javascript
如何用js实现鼠标向上滚动时浮动导航
Jul 18 #Javascript
终于实现了!精彩的jquery弹幕效果
Jul 18 #Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
Jul 18 #Javascript
You might like
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
基于BootStrap Metronic开发框架经验小结【四】Bootstrap图标的提取和利用
2016/05/12 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
js初始化验证实例详解
2016/11/26 Javascript
Vue实现virtual-dom的原理简析
2017/07/10 Javascript
Vue 2.0的数据依赖实现原理代码简析
2017/07/10 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
微信小程序使用wxParse解析html的方法示例
2019/01/17 Javascript
详解Vue.js 作用域、slot用法(单个slot、具名slot)
2019/10/15 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
python3 pygame实现接小球游戏
2019/05/14 Python
python 中的列表生成式、生成器表达式、模块导入
2019/06/19 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
浅谈PyTorch中in-place operation的含义
2020/06/27 Python
python如何导入依赖包
2020/07/13 Python
python实现简单的五子棋游戏
2020/09/01 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
中式婚礼主持词
2014/03/13 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
生物科学专业自荐书
2014/06/20 职场文书
乡镇创先争优活动总结
2014/08/28 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python