html元素拖动互换位置原理,HTML5 元素拖动 - 实现元素左右拖动, 或更改自身排序...
拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。
浏览器支持:Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放(注:在 Safari 5.1.2 中不支持拖放。)。
2、相关属性及方法
设置元素为可拖放,把 draggable 属性设置为 true
index1
设置元素被拖动时触发的事件 ondragstart
...
放到何处 - ondragover ,以div 为例:
进行放置 - ondrop,以div 为例:
3、实现一个简单的 从左向右 或 从右向左拖动元素,且可以移动元素之前的排列位置。
效果图:
图1.初次加载
图2.从左向右拖动元素
图3.打乱右侧元素排序
图4.把右侧元素移向左边
html:
拖动元素的方法,未在元素上进行绑定,均在 js 里进行绑定
1
拖放(Drag 和 drop)
2
3
4 index1
5 index2
6 index3
7 index4
8 index5
9 index6
10 index7
11
12
13
javascript:
动态给 label元素 加上 id属性 及拖动事件
1 var moveItem = document.getElementsByTagName('label');
2
3 for (let i = 0; i < moveItem.length; i++) {
4 //动态设置label元素id
5 moveItem[i].setAttribute('id', 'label' + i);
6 moveItem[i].ondragstart = function (ev) {
7 //dataTransfer.setData() 方法设置被拖数据的数据类型和值
8 ev.dataTransfer.setData("Text", this.id);
9 };
10 }
设置 左边-〉右边 拖动 或 自身元素排序
1 document.getElementById('right').ondragover = function (ev) {
2 ev.preventDefault(); //阻止向上冒泡
3 }
4 document.getElementById('right').ondrop = function (ev) {
5 ev.preventDefault();
6 var id = ev.dataTransfer.getData('Text');
7 var elem = document.getElementById(id); //当前拖动的元素
8 var toElem = ev.toElement.id; //放置位置
9 if (toElem == 'right') {
10 //如果为container,元素放置在末尾
11 this.appendChild(elem);
12 } else {
13 //如果为container里的元素,则插入该元素之前
14 this.insertBefore(elem, document.getElementById(toElem));
15 }
16 }
设置右边-〉左边拖动 或 自身元素排序
1 document.getElementById('left').ondragover = function (ev) {
2 ev.preventDefault(); //阻止向上冒泡
3 }
4 document.getElementById('left').ondrop = function (ev) {
5 ev.preventDefault();
6 var id = ev.dataTransfer.getData('Text');
7 var elem = document.getElementById(id);
8 var toElem = ev.toElement.id;
9 if (toElem == 'left') {
10 //如果为container,元素放置在末尾
11 this.appendChild(elem);
12 } else {
13 //如果为container里的元素,则插入该元素之前
14 this.insertBefore(elem, document.getElementById(toElem));
15 }
16 }
代码解释:
ondragover 默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。
调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
html元素拖动互换位置原理,HTML5 元素拖动 - 实现元素左右拖动, 或更改自身排序...相关推荐
- html元素拖动互换位置原理,【详】JS实现拖拽元素互换位置
写在前面的废话 大家好,我是练习js时长接近两年半的个人练习生--李大雷 算了,直接 鸡,你太美~ 应用场景 很多时候,我们需要让用户来自定义自己想要的菜单顺序,或者一些按钮的排序,那么这个时候,怎么 ...
- Vue实现DOM元素拖放互换位置
一.拖放和释放 HTML 拖放接口使得 web 应用能够在网页中拖放文件.这里将介绍了 web 应用如何接受从底层平台的文件管理器拖动DOM的操作. 拖放的主要步骤是为 drop 事件定义一个释放区( ...
- 伪元素在父元素中居中_web前端Html5开发CSS之元素五大居中方式,实用又简单!...
大家是不是对元素居中的知识点很是模糊?是不是苦于找不到一个总结的通俗易懂的说明?是不是自己懒得去总结?今天小编在前端的学习与实践中总结出的元素的五大居中方式,黏贴了代码并对代码做了解释,希望对迷茫的有 ...
- python3查找元素在数组位置_Python:查找数组中元素的位置
我有一个CSV包含气象数据,如最高和最低温度,降水量,经度和纬度的气象站等.每类数据存储在一个单一的列. 我想找出最高和最低温度的位置.找到最大值或最小值很容易: numpy.min(我的温度栏) 如 ...
- js 实现拖动元素到任意位置
一.实现效果 二.实现代码 主要通过原生的 mousedown 和 mouseup 以及mouseleave 事件实现 <!DOCTYPE html> <html lang=&quo ...
- 使用vue-grid-layout完成桌面拖拽布局功能(实现两个元素互换位置)
最近有个项目需要实现和windows桌面类似的图标拖拽功能,找了很多组件都没找到一个合适的,但通过本博主的不懈努力最后发现了两款不错的插件: sortablejs vue-grid-layout 本来 ...
- html5语义化标记元素_语义HTML5元素介绍
html5语义化标记元素 Semantic HTML elements are those that clearly describe their meaning in a human- and ma ...
- 【顺序表】13 顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换
问题描述 : 目的:使用自行设计的顺序表ADT或STL中的vector模板,设计并实现顺序表应用场合的一些简单算法设计. 应用1:试设计一个算法,用尽可能少的辅助空间将非空顺序表中前 m 个元素和后 ...
- 下列不属于html5语义元素,HTML5 新的语义元素
HTML5 提供了新的语义元素来明确一个Web页面的不同部分: HTML5中新的语义元素 HTML5 元素 标签定义文档中的节(section.区段).比如章节.页眉.页脚或文档中的其他部分. 根据W ...
- HTML5用于定义一篇日志,[网页设计]HTML5之新增的元素
今天打开博客看到自己有了一个小粉丝,说实话还是蛮开心的,坚持写博客大半年了,终于迎来了自己的第一个小伙伴.总算是坚持了那么久的事情看到了结果吧. 前几天参加了我们学院老师的比赛---<青年教师大 ...
最新文章
- 应用更新iOS 开发:应用内实现 更新提醒
- VBA实战技巧精粹012:查找指定目录下的指定文件及Dir函数用法
- cli3解决 ie11语法错误 vue_基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册...
- php 类分开写,自己前几天写的无限分类类_PHP教程
- android html footer 固定,前端小技巧之footer固定
- TFS Training for Kunlun bank (http://www.klb.cn/) 微软研发流程(ALM)管理培训会议(昆仑银行) 2016.09.21...
- 【NOI2016】循环之美,mobius反演+杜教筛
- php单独输出每个单词,PHP:在特定短语/单词之后搜索文本文件并输出
- NGUI_2.6.3_(3D视图ScrollView)
- initrd.img处理
- Anaconda常用命令大全
- pymongo使用经验
- asp.net core 系列之用户认证(authentication)
- linux中安装mysql5.1.73_linux安装mysql(5.1.73)
- plc和pc串口通讯接线_电脑和PLC连接不上我用的是USB转串口的连接线
- python 算法课件_分析《Python+TensorFlow机器学习实战》PDF代码课件+《Python深度学习》PDF代码张量...
- synchronized锁升级之偏向锁
- 闪迪MicroSD卡无法格式化修复经验(不一定管用)
- CF506C Mr. Kitayuta vs. Bamboos
- 苹果中国应用商店改为人民币结算 可网银充值
热门文章
- 5.docker 命令
- 26.卷1(套接字联网API)---线程
- 17. Window confirm() 方法
- 文字在div中的垂直居中问题 div在页面中的水平垂直居中问题 vertical-align ??????
- [2019杭电多校第八场][hdu6667]Roundgod and Milk Tea
- VMware虚拟机下安装CentOS 6.10并配置访问外网
- 解决pre-commit hook failed (add --no-verify to bypass)的问题
- Open CV leaning
- ArcGIS API for JS geodesicUtils.geodesicAreas 计算面积出现负值情况记录
- 4.2 react patterns(转)