详解HTML5拖放功能实例

html5提供专门的拖拽与拖放的api,以后实现这类效果就不必乱折腾了。但是,考虑到opera浏览器似乎对此不感冒,在通用性上有待商榷,所以这里也就简单说一说。拖放(drag 和 drop)是 html5 标准的组成部分。

浏览器支持

Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放。

被拖元素,dragElement :

1、添加事件:ondragstart

立即学习“前端免费学习笔记(深入)”;

2、添加属性:dragable

放置元素,dropElement:

1、添加事件:ondargenter , ondragover , ondragleave , ondragend ,ondrop

和mouser划入划出一类的事件很类似,字面也很好理解,不赘述了,下面会用例子来说明。

1、页面上元素间的拖放

下面用个小例子,p间的拖放来展示,各个事件如何被触发:

nbsp;html>                    #dropEle        p        {            float: left;        }                    /**         * 拖放(Drag 和 drop)是 HTML5 标准的组成部分。         * 浏览器支持         *Internet Explorer 9、Firefox、Opera 12、Chrome 以及 Safari 5 支持拖放。         */        $(function ()        {            $("#dragEle")[0].ondragstart = function (event)            {                console.log("dragStart");                event.dataTransfer.setData("Text", event.target.id);            };            /**             * 当放置被拖数据时,会发生 drop 事件。             * 调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)             * @param event             */            $("#dropEle")[0].ondrop = function (event)            {             /*   for (var p in event.dataTransfer)                {                    console.log(p + " = " + event.dataTransfer[p] + " @@");                }            */                console.log("onDrop");                var id = event.dataTransfer.getData("Text");                $(this).append($("#" + id).clone().text($(this).find("p").length));                event.preventDefault();            };            /**             * ondragover 事件规定在何处放置被拖动的数据。             *默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。             */            $("#dropEle")[0].ondragover = function (event)            {                console.log("onDrop over");                event.preventDefault();            }            $("#dropEle")[0].ondragenter = function (event)            {                console.log("onDrop enter");            }            $("#dropEle")[0].ondragleave = function (event)            {                console.log("onDrop leave");            }            $("#dropEle")[0].ondragend = function (event)            {                console.log("onDrop end");            }        });    

登录后复制

需要注意几点:

a、ondragover中必须组织事件的默认行为,默认地,无法将数据/元素放置到其他元素中。

b、drop 事件的默认行为是以链接形式打开,所以也需要阻止其默认行为。

还有可能注意到:在拖放时,event中包含一个event.dataTransfer 对象,上例中我们使用了该对象的setData方法传递了拖动p的id,然后在drop中取得该id,并且复制了该元素添加到放置的p中。

下面介绍下该对象的其他方法:

event.dataTransfer :

items = [object DataTransferItemList] @@drag_drop.html:44

files = [object FileList] @@drag_drop.html:44

types = text/plain @@drag_drop.html:44

effectAllowed = all @@drag_drop.html:44

dropEffect = none @@drag_drop.html:44

clearData = function clearData() { [native code] } @@drag_drop.html:44

getData = function getData() { [native code] } @@drag_drop.html:44

setData = function setData() { [native code] } @@drag_drop.html:44

setDragImage = function setDragImage() { [native code] } @@

我使用了js打印出了它所有的属性:

1、getData,setData上例已经使用了,clearData就是清除设置的数据。

2、值得注意的是files,当把操作系统中选择的一个或多个文件拖入该p中,files中会存储拖入文件的信息,然后我们通过file可以得到文件的类型,长度,内容然后实现上传。

3、setDragImage(image, x, y)用于设置鼠标移动过程中随鼠标一起移动的效果图。必须在dragstart中设置。

4、types,effectAllowed和dropEffect分别是拖入元素的类型,拖拽过程中鼠标显示的样式,我觉得可以忽略了这几个属性,一般用不到。

相关重点

DataTransfer 对象:退拽对象用来传递的媒介,使用一般为Event.dataTransfer。

draggable 属性:就是标签元素要设置draggable=true,否则不会有效果,例如:

列表1

ondragstart 事件:当拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上

ondragenter 事件:当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上

ondragover 事件:拖拽元素在目标元素上移动的时候触发的事件,此事件作用在目标元素上

ondrop 事件:被拖拽的元素在目标元素上同时鼠标放开触发的事件,此事件作用在目标元素上

ondragend 事件:当拖拽完成后触发的事件,此事件作用在被拖曳元素上

Event.preventDefault() 方法:阻止默认的些事件方法等执行。在ondragover中一定要执行preventDefault(),否则ondrop事件不会被触发。另外,如果是从其他应用软件或是文件中拖东西进来,尤其是图片的时候,默认的动作是显示这个图片或是相关信息,并不是真的执行drop。此时需要用用document的ondragover事件把它直接干掉。

Event.effectAllowed 属性:就是拖拽的效果。

以上就是详解HTML5拖放功能实例的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2910204.html

(0)
上一篇 2025年3月11日 04:30:27
下一篇 2025年3月11日 04:30:32

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • html5的头部head的详解

    移动端的工作已经越来越成为前端工作的重要内容,除了平常的项目开发,html 头部标签功能,特别是meta标签显得非常重要。 HTML文档的head部分,通常包括指定页面标题,为搜索引擎提供关于页面本身的信息,加载样式表,以及加载JavaSc…

    编程技术 2025年3月11日
    200
  • 什么是应用程序缓存(Application Cache)?

    起源 html5之前的网页,都是无连接,必须联网才能访问,这其实也是web的特色,这其实对于PC是时代问题并不大,但到了移动互联网时代,设备终端位置不再固定,依赖无线信号,网络的可靠性变得降低,比如坐在火车上,过了一个隧道(15分钟),便无…

    2025年3月11日 编程技术
    200
  • Html5画布的详细介绍

    这篇文章主要介绍了html5画布,canvas 元素用于在网页上绘制图形。有兴趣的小伙伴可以一起来了解一下 关于HTML5画布canvas的功能 一、画布的使用 1、首先创建一个画布(canvas) 登录后复制 2、使用JavaScript…

    2025年3月11日
    200
  • html5音频的相关实例介绍

    html5 提供了播放音频文件的标准。 互联网上的音频 直到现在,仍然不存在一项旨在网页上播放音频的标准。 今天,大多数音频是通过插件(比如 Flash)来播放的。然而,并非所有浏览器都拥有同样的插件。 HTML5 规定了在网页上嵌入音频元…

    2025年3月11日
    200
  • HTML5新表单元素的图文实例

    这一篇介绍html5新增的表单元素和表单属性。 首先先说一个html5中表单新增的一个功能,在我们之前的html中,表单元素必须放在form元素所包含的里面,在html5中,可以把他们写在页面上的任何一个地方,然后给该元素增加一个form属…

    2025年3月11日 编程技术
    200
  • 如何使用HTML5地理位置定位功能?

    地理位置(geolocation)是 html5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用。今天这篇文章向大家介绍一下 html5 地理位置定位的基本原理及各个浏览器的数据精度情况。 如何使用HTML…

    2025年3月11日
    200
  • html5中关于volume属性的使用详解

    audio对象属性: volume 描述:设置或返回音频的音量,取值范围(0——1) 下面是我做的音乐播放器如何调节音频音量的代码: //增加切换音量事件(function(){    var height = $(“#myAudio ul…

    编程技术 2025年3月11日
    200
  • HTML5中canvas的问题总结

      学习HTML5 canvas遇到的问题 1. 非零环绕原则(nonzZero rule)  非零环绕原则是canvas在进行填充的时候是否要进行填充的判断依据。 在判断填充的区域拉一条线出来,拉到图形的外面,这条拉出来的线就是辅助线。判…

    2025年3月11日 编程技术
    200
  • html5中关于封装和添加与获取删除以及cookie介绍

     cookie是储存在用户本地终端上的数据。  在我们登陆网站时有记录密码,也有时间限制比如说7天,5天等等这都是我们利用cookie来写的,  这就是利用了cookie的会话周期,但cookie同时又是不安全的我们可以打开网页看到用户输入…

    编程技术 2025年3月11日
    200
  • html5中实现table表格中的斜线表头效果的5种做法

    table表格,这个东西大家肯定都不陌生,代码中我们时常都能碰到,那么给table加一个斜线的表头有时是很有必要的,但是到底该怎么实现这种效果呢? 我总结了以下几种方法: 1、最最最简单的做法 直接去找公司的UI,让她做一张图片,作为背景图…

    编程技术 2025年3月11日
    200

发表回复

登录后才能评论