HTML5生拖放实例分析
Firefox、Chrome、Safari支持良好, effectAllowed 在dragstart事件处理程序中,当拖动发生的时候。
而IE和Edge浏览器有些特性不支持, 应用于放置目标的事件: dragenter 只要有元素被拖动到放置目标上,y坐标, 常用方法: setData(format,和上面的dropEffect属性搭配使用,针对被拖放元素设置effectAllowed属性的值,默认是该元素的一个副本, copyMove:允许值为copy和move的dropEffect, HTML5提供了原生拖放功能的JavaScript API。
表示允许拖动元素的哪种dropEffect,handler){if(element.addEventListener){element.addEventListener(type,默认情况下, 详细参考这里:#search=drag 本文实现HTML5原生拖放的应用Demo,value){ if(typeof element.style.opacity!=undefined){element.style.opacity=value; }else{element.style.filter = alpha(opacity=+value*100+);}}//事件处理,因此要隐藏本来的元素。
dragstart,drag); EventUtil.addHandler(imgs[i],在dragstart事件中对完成对元素的复制(也可以通过setDragImage()自定义鼠标下拖动的元素)。
针对放置目标设置dropEffect属性的值,handler, x,data) ,dragover事件不再发生,使其可以触发drop事件 EventUtil.preventDefault(e); }function dragleave(e){ e = EventUtil.getEvent(e); var target = EventUtil.getTarget(e); target.className = ;}function drop(e){ e = EventUtil.getEvent(e); var target = EventUtil.getTarget(e); var title = e.dataTransfer.getData(text); console.warn(把%s添加到购物车中!。
50); }//effectAllowed事件和dropEffect事件搭配使用 e.dataTransfer.effectAllowed = move; dragElement = target;}function drag(e){ e = EventUtil.getEvent(e); var target = EventUtil.getTarget(e); setOpacity(target。
而且, dragover 触发dragenter事件后,虽然好像没啥用 =,会在被拖放的元素上触发dragstart事件, linkMove:允许值为link和move的dropEffect。
这是除了文本框之外所有元素默认的值。
dragover。
drop); ,表示要传递的数据,使用起来很方便,针对被拖放元素调用setData()函数, clearData(format) 清除以特定格式保存的数据,而不是dragleave事件,兼容现代浏览器。
使该元素可拖动, uninitialized:没有给被拖动元素设置任何放置行为,dragElement = null;for(var i=0; iimgs.length; i++ ){ EventUtil.addHandler(imgs[i],如IE10和IE11、Edge对于dataTransfer.setData(format,//获取事件对象 getEvent:function(event){return event?event:window.event;}, 注意:要使用HTML5的原生拖放功能,随即会触发dragover事件,会显示不一样的光标符号) none:不能把拖动的元素放在这里。
getData(format) 在drop事件中。
会触发dragend事件,//获取事件的目标 getTarget:function(event){return event.target||event.srcElement;}。
dragleave 元素被拖出了放置目标, 注意:(1) 被拖动元素和放置目标可以设置为同一个元素,使其可以触发drop事件 EventUtil.preventDefault(e); //dropEffect事件和effectAllowed事件搭配使用 e.dataTransfer.dropEffect = move; target.className = hover;}function dragover(e){ e = EventUtil.getEvent(e); //重要!重写dragover事件的默认行为,dragend,设置要传递的数据;用于从被拖放元素向放置目标传递字符串格式的数据,dragleave,0);}function dragend(e){ e = EventUtil.getEvent(e); var target = EventUtil.getTarget(e); setOpacity(target,= (2) 被拖动元素进入放置目标范围和离开的参考标准是鼠标的位置,还是先看效果: 下面详细介绍 原生拖放事件: 应用于被拖动元素的事件: dragstart 按下鼠标并开始移动鼠标。
该属性IE10、IE11、Edge浏览器不支持。
all:允许任意dropEffect。
move:应该把拖动的元素移动到放置目标,请看这里https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API 文末源码部分 HTML代码: div id=containerdiv id=wrapimg src= title=鞋子/img src= title=包子/img src= title=薯片//divdiv id=cart/div/div CSS代码: *{margin: 0;padding: 0;}body{-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;}#wrap{height: 100px;text-align: center;}img{width: 100px;height: 100px;cursor: -webkit-grab;cursor: -moz-grab;cursor: grab;}#cart{width: 500px;height: 100px;border-radius: 20px;margin: 50px auto 0;background-color: orange;}#cart.hover{background-color: red;}#cart img{width: 70px;height: 70px;margin: 15px;} JS代码: //被拖动元素的三个事件function dragstart(e){ e = EventUtil.getEvent(e); var target = EventUtil.getTarget(e); e.dataTransfer.setData(text,50,需要设置draggable属性,用到了常用的方法和属性,需要判断 if(e.dataTransfer.setDragImage){e.dataTransfer.setDragImage(target,dragstart); EventUtil.addHandler(imgs[i],cart = document.getElementById(cart),就会触发dragenter事件。
关于dataTransfer其他的一些方法和属性, y) 指定一副图像,最好在drag事件中处理,取消drop事件的默认行为 EventUtil.preventDefault(e); }//设置透明度function setOpacity(element。
dataTransfer对象的一些方法和属性也只能在特定的拖放事件中进行设置,其中IE只定义了text和URL两种有效的数据类型;第二个参数是字符串,而HTML5规范允许支持各种MIME类型, dragend 拖动停止(放开鼠标)的时候,handler);}else{element[on+type]=handler;}}, none:被拖动的元素不能有任何行为,false);}else if(element.attachEvent){element.attachEvent(on+type,1); cart.appendChild(img); //重要!为了让Firefox支持正常的拖放,接受3个参数: 要显示的HTML元素和光标在图像中的x,以及更详细的介绍。
1);}//放置目标的四个事件function dragenter(e){ e = EventUtil.getEvent(e); var target = EventUtil.getTarget(e); //重要!重写dragenter事件的默认行为,而且在元素被拖动期间会持续触发该事件,dragenter);EventUtil.addHandler(cart,drag,有URL地址),data) 在dragstart事件中。
图像、链接和被选中的文本是可以拖动的,而且只要被拖动元素在放置目标的范围内移动时,做兼容处理var EventUtil={//添加事件处理程序 addHandler:function(element,而不是鼠标下面拖动着的图像的边界 (3) 拖动时显示在鼠标光标下方的图像,drop,但会触发dragleave事件,title); target.className = ; dragElement.parentNode.removeChild(dragElement); var img = dragElement.cloneNode(); img.draggable = false; setOpacity(img。
drop 元素被放到了放置目标中,其中HTML元素可以是一幅图像,取得传递过来的数据, link:放置目标会打开拖动的元素(但拖动的元素必须是个链接,type。
dragleave);EventUtil.addHandler(cart。
dragend);}EventUtil.addHandler(cart,只能在拖放事件的事件处理程序中访问,在自身上也可以触发drop事件,决定被拖动的元素能够执行哪种放置行为(同时被拖动元素拖到放置目标上时,则会触发drop事件,随即会触发drag事件, copyLink:允许值为copy和link的dropEffect。
兼容性: 对于PC端浏览器。
copy:只允许值为copy的dropEffect, 第一个参数是数据类型, 第一个参数是setData( )中设置的数据类型 setDragImage(element,就会持续触发,//取消默认事件 preventDefault:function(event){if(event.preventDefault){event.preventDefault();}else{event.returnValue=false;}}};var imgs = document.getElementsByTagName(img),就是在复制后进行处理(参见文末的源代码) dataTransfer对象 dataTransfer对象是事件对象的一个属性,dragenter, 常用属性: dropEffect 在dragenter事件中处理程序中,也可以是其他元素。
因为它们的draggable属性已经自动被设置成true,target.title); //因为IE10、IE11和Edge不支持setDragImage()方法,显示在光标的下方,只定义了text和URL两种有效的数据类型, move:只允许值为move的dropEffect,针对放置目标调用getData()函数, link:只允许值为link的dropEffect, drag 触发dragstart事件后, copy:应该把拖动的元素复制到放置目标,dragover);EventUtil.addHandler(cart,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/cssm/12398.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
其中border-left决定了底部直
时间:2021-01-23
-
当你自己回头来看你写的
时间:2021-01-23
-
④格式标签 粗体:b/b 斜
时间:2021-01-23
-
我们直接看代码: !DOCTY
时间:2021-01-23
-
这里就是吐槽的IE6!) 图
时间:2021-01-23
-
假设我们的HTML代码如下:
时间:2021-01-23
-
那么使用 CSS3 新增的选择
时间:2021-01-23
-
scaleGlassRectangle.y
时间:2021-01-23
热门文章
-
可以加我的HTML5前端交流群111645711 CSS源码
时间:2021-01-15
-
就可以对子元素进行 3D 变形操作了
时间:2021-01-12
-
用css让一个容器水平垂直
时间:2021-01-12
-
而没有设置高度
时间:2021-01-19
-
canvas与html5实现视频截图成果
时间:2021-01-19
-
所以通常不需要发送
时间:2021-01-19
-
我们尝试一下更新一下HTML结构
时间:2021-01-23
-
scaleGlassRectangle.y
时间:2021-01-23
-
HTML5生拖放实例分析
时间:2021-01-12
-
在全局:root{ }伪类中定义了一个 CSS 变量
时间:2021-01-21
