您现在的位置是:网站首页> 编程资料编程资料
详解Html5原生拖拽操作html5拖拽排序多图片上传插件特效源码HTML5 拖拽批量上传文件的示例代码html5实现多图片预览上传及点击可拖拽控件html5 canvas绘制可拖拽的3D立体文字效果源码html5使用Drag事件编辑器拖拽上传图片的示例代码HTML5拖拽API经典实例详解
2023-10-16
244人已围观
简介 本篇文章主要介绍了详解Html5原生拖拽操作,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
最近的一次项目开发中用到了H5的拖拽功能,由于现有项目使用的是VUE全家桶,使用了vuedragable这个插件,但是整个过程是比较痛苦的。遂决定从H5拖拽的原理开始研究,然后再将其应用到数据驱动的框架中。在H5中要想实现拖放操作,至少需要经过两个步骤:1) 将想要拖放的对象元素的draggable属性设为true(img与a元素默认允许拖放);2) 编写与拖放相关的事件处理代码。为了测试简便,我这里首先使用jQuery库完成拖拽的基本功能。
1. 拖拽过程
1.1 拖动事件
当按住鼠标拖动draggable元素的时候会按照如下顺序依次触发
dragstart -> drag -> dragend
- dragstart :在按住鼠标开始拖动时候触发(触发一次)
- drag :在按住鼠标拖动的过程触发(持续触发)
- dragend :在释放鼠标后触发(无论是把元素放到了有效的放置目标,还是放置到了无效的放置目标上)
1.2 放置事件
当将draggable元素元素拖动到容器中将会按照如下顺序依次触发
dragenter -> dragover -> drop
dragenter:只要有元素被拖动到放置目标上,就会触发dragenter事件
dragover:dragenter紧随其后的就是dragover事件,而且在被拖动的元素还在放置目标的范围内移动时,就会持续触发该事件。
dragleave:元素被拖出了放置目标,会触发dragleave
drop:将拖动元素放置到目标元素上的时候会激发
1.3 完整事件流
从开始拖动元素到放置元素到目标区域,将会按照如下顺序依次触发
dragstart->drag->dragenter->dragover->dragleave->drop->dragend
2. 解决firefox对拖拽不支持的问题
如果我们直接给一个元素添加draggable属性,在chrome,opera中是可以直接进行拖拽(没有可以释放的操作(比如箭头变+号)),但是在firefox却没有反应
- 优
- 良
- 中
- 差
要解决这个问题必须为拖拽元素绑定dragstart事件处理函数,并且在该函数中调用event.dataTransfer.setData函数
3. 解决chrome,opera拖拽元素至容器中时没有显示可释放标识问题
可释放标识使用不同的操作系统可能不同,在mac chrome中出现的是一个圆形标识里面嵌入一个白色的'+'。
解决方案是为容器绑定dragover事件
- 优
- 良
- 中
- 差
| 节次/星期 | 周一 | 周二 | 周三 | 周四 | 周五 |
|---|---|---|---|---|---|
| 第一节 |
4. 解决放置时firefox打开新选项卡问题
使用firefox的时候如果释放了被拖拽的元素,默认浏览器将会打开一个新的选项卡,如下

这是由于drop回调函数之后浏览器执行了默认行为,通常的解决方案在拖拽容器的drop钩子中添加阻止默认事件执行以及阻止冒泡的代码。
但是如果将draggable元素拖到其他地方,依然会导致打开新选项卡问题的出现,这时可以为所有容器添加如上代码。

5. 编写一个完整小例子

源码: https://github.com/pluslicy/drag
随后将对vuedraggable插件库进行学习,应用在vue框架中
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- html5中如何将图片的绝对路径转换成文件对象html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
- html5 canvas绘制放射性渐变色效果html5 canvas实现交互式彩色渐变背景动画特效源码html5 canvas绘制的圆形气泡渐变背景动画特效源码HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例HTML5 canvas实现渐变色圆形进度条特效源码html5使用canvas实现的圆形渐变进度条加载动画特效源码使用javascript和HTML5 Canvas画的四渐变色播放按钮效果html5 Canvas画图教程(4)—未闭合的路径及渐变色的填充方法
- HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能Html5 实现微信分享及自定义内容的流程Html5页面在微信端的分享的实现方法微信端html5页面调用分享接口示例详解html5 canvas 微信海报分享(个人爬坑)HTML5中外部浏览器唤起微信分享功能的代码
- canvas基础之图形验证码的示例用canvas显示验证码的实现利用html5 canvas破解简单验证码及getImageData接口应用canvas实现滑动验证的实现示例
- canvas三角函数模拟水波效果的示例代码使用 HTML5 Canvas 制作水波纹效果点击图片就会触发
- HTML5 使用 sessionStorage 进行页面传值的方法在html页面中取得session中的值的方法
- 天天飞车A级赛车男爵属性速度性能全面解析_天天飞车攻略_手机游戏_游戏攻略_
- 全民飞机大战烧饼修改器刷分教程_手机游戏_游戏攻略_
- 天天飞车威酷升级A车技巧心得_手机游戏_游戏攻略_
- 天天飞车显示检测异常解决方法详解_手机游戏_游戏攻略_
