html5 拖放---(二)转
draggable是一个枚举属性,用于指定一个标签是否可以被拖拽。有以下四种取值:
| true | 表示此元素可拖拽 |
| false | 表示此元素不可拖拽 |
| auto | 除img和带href的标签a标签表示可拖拽外,其它标签均表示不可拖拽 |
| 其它任何值 | 表示不可拖拽 |
事件:
【被拖拽元素】
| ondragstart | 拖拽前触发(鼠标按下并开始拖拽) |
| ondrag | 拖拽过程中触发(连续出发,即使鼠标不移动也会连续触发) |
| ondragend | 拖拽结束触发 |
【目标元素】
| ondragenter | 进入目标元素 |
| ondragover | |
| ondrop | 释放鼠标瞬间触发 |
| ondragleave | 鼠标离开目标元素触发 |
整个拖拽过程事件顺序:
ondragstart — ondrag — ondragenter — ondragover — ondragleave/ondrop — ondragend
注:1. 若想触发ondrop事件,ondragover 中需要阻止默认事件(元素默认是不允许放置的)。
2. 在Firefox 3.5+中,如果是把图像拖放到放置目标上,页面就会转向图像文件;而如果是把文本拖放到放置目标上,则会导致无效URL错误,因此,为了让Firefox支持正常的拖放,还要取消drop事件的默认行为,阻止它打开URL。
关于event.dataTransfer
| setData(key,value) | 两个参数都是字符串类型 |
| getData(key) | getData()可以取得由setData()保存的值 |
| effectAllowed |
设置光标样式(none, copy, copyLink, copyMove, link, linkMove, move, all 和 uninitialized) ; 事件 ondragstart中设置 |
| setDragImage(element, x, y) |
指定一副图像,当拖动发生时,显示在光标下方。这个方法接受的三个参数分别是要显示的HTML元素和光标在图像中的x、y坐标。 其中,HTML元素(可以是隐藏的元素)可以是一副图像,也可以是其它元素。是图像则显示图像,是其它元素则显示渲染后的元素。 实现这个方法的浏览器有Firefox 3.5+、Safari 4+ 和 Chorme |
| files |
获取外部拖拽文件的一个类似数组的集合(length)。集合中每个元素有type属性,依次判断拖拽的文件类型。 实现这个属性的浏览器有IE10+、Firefox 3.5+和Chrome。 |
注:只能在拖放事件的事件处理程序中访问dataTransfer对象。
保存在dataTransfer对象中的数据只能在【目标元素】事件处理程序中读取。
关于FileReader(读取文件信息)
| readAsDataURL |
参数为要读取的文件对象,将文件读取为DataUrl |
| onLoad |
读取成功完成时触发此事件,this.result 获取读取的文件数据,如果是图片,将返回base64格式的图片数据 |
例:
一个完整的实例(拖拽上传预览):
<html>
<head>
<title></title>
<style>
* {
padding: 0px;
margin: 0px;
} #oDiv1 {
width: 300px;
height: 300px;
border: 1px solid #000;
}
</style>
</head>
<body>
<div id="oDiv1"></div>
<script> var oDiv1 = document.getElementById("oDiv1");
var oDiv2 = document.getElementById("oDiv2"); oDiv1.ondragenter = function (ev) {
this.style.borderStyle = "dashed";
}
oDiv1.ondrop = function (ev) {
var files = ev.dataTransfer.files;
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.onload = (function (f) {
return function () {
oDiv1.innerHTML = '<img src="' + this.result + '" title="' + f.name + '" width="100%" />';
}
})(f)
//(function(f){reader.onload = function (ev) {
// oDiv1.innerHTML = '<img src="' + ev.target.result + '" title="' + f.name + '" width="100%" height="100%" />';
//}})(f)
reader.readAsDataURL(f);
}
this.style.borderStyle = "solid";
ev.stopPropagation();
ev.preventDefault();
}
oDiv1.ondragover = function (ev) {
ev.stopPropagation();
ev.preventDefault();
}
oDiv1.ondragleave = function (ev) {
this.style.borderStyle = "solid";
}
</script>
</body>
</html>
html5 拖放---(二)转的更多相关文章
- HTML5 拖放及排序的简单实现
HTML5 拖放及排序的简单实现 之前写过个类似的例子,看这里. 但想再深入一步,希望能通过拖放,来交换二个元素的位置.最好有应用到手机平台上. 作了个简单的例子,在手机上测试的时候不成功..查了好多 ...
- HTML5拖放(drag and drop)与plupload的懒人上传
HTML5拖放能够将本地的文件拖放到页面上,plupload又是很好的文件上传插件,而今天就将两者结合,做了个文件拖拽上传的功能. 简述HTML5拖放 拖放是HTML5标准的一部分,任何元素都能够拖放 ...
- HTML5 拖放
拖放(Drag 和 drop)是 HTML5 标准的组成部分. 拖放 拖放是一种常见的特性,即抓取对象以后拖到另一个位置. 在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 浏览器支持 I ...
- HTML5拖放API
拖放事件事件提供了拖放可以控制几乎所有方面的拖放操作.棘手的部分是确定每个事件触发:在拖项目火:别人火下降的目标.拖动项时,以下事件(按照这个顺序): 拖曳开始拖dragend此刻你把鼠标按钮和开始移 ...
- HTML5拖放
HTML5拖放 <!doctype html> <html> <head> <meta charset="UTF-8"> <t ...
- HTML5 拖放(Drag 和 Drop)功能开发——基础实战
随着HTML5的普及度越来越高,现在写代码也遇到一些了,经过同事的点播开展了一次Dojo活动用以技术交流,我也乘此机会将HTML5的拖放功能整理了一下. 简介 拖拽(Drag/Drop)是个非常普遍的 ...
- 【Demo】HTML5拖放--简单demo
用HTML5拖放功能编写一个简单的拖放Demo 单次拖放demo 效果: ------拖放前------- ------拖放后------- 实现代码: <!DOCTYPE html> ...
- HTML5: HTML5 拖放
ylbtech-HTML5: HTML5 拖放 1.返回顶部 1. HTML5 拖放(Drag 和 Drop) 拖放(Drag 和 drop)是 HTML5 标准的组成部分. 将 RUNOOB.C ...
- html5 拖放学习
html5拖放 需要有可拖放元素,可放置的位置(可多个),就像是一个苹果,多个箱子,苹果可以在箱子间来回放置,同样元素也可在多个可放置位置间来回拖放. 如果只有一个位置,元素只可被从原位置托放置唯一目 ...
- HTML5系列二(标签元素、FileReader、拖放)
nav元素的使用场合 页面中可以包含多个nav元素,通常情况下头部和尾部都会包含导航,这样提高了可访问性,访客能够清晰的将其辨认出来.nav元素是一个可以用来作为页面导航的链接组:其中的导航元素链接到 ...
随机推荐
- (转)log4net使用详解
说明:本程序演示如何利用log4net记录程序日志信息.log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括M ...
- (转).net开发者对android第二周的学习体会
这一周相对没有春节时这么闲了,白天也比较多的工作要做,每天晚上又要被我三岁的女儿折腾到十点, 实在没有多少时间学习.在前一周的基础上,这周我试着自己练习写了一个个人管理的android的程序,主要实现 ...
- AngularJs练习Demo11引入Jquery
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...
- C#远程获取/读取网页内容
转载自 :http://blog.csdn.net/gisfarmer/article/details/2836904 using System; using System.Collections.G ...
- vector -1
vector的特色有支持随机存取,在集合尾端增删元素很快,但是在集合中间增删元素比较费时. vector以模板(泛型)方式实现,可以保存任意类型的变数,包括使用者自定义的资料型态,例如:它可以是放置整 ...
- 医院设置 codevs 2577
Floyd+二叉树 #include<iostream>#include<cstdlib>#include<cstdio>#include<cstring&g ...
- ESP8266固件修改可以控制多个IO方法
之前在论坛上找到了一个通过ESP8266可以控制GPIO0的固件和app,但是自己做的家庭影音灯光系统是需要控制多个IO从而控制STM32.通过观看大明的视频,了解了GPIO的控制方法. 在固件的ap ...
- SQL学习笔记——SQL中的数据查询语句汇总
where条件表达式 --统计函数 Select count(1) from student; --like模糊查询 --统计班上姓张的人数 select count(*) from student ...
- JS小数位保留两位小数--toFixed()
parseInt,parseFloat,parseDouble在JS中是将值转换成相应的类型: 你必须要这样,才能实现: <script> alert(parseFloat ...
- js获取IP地址的方法小结
s代码获取IP地址的三种方法,在js中取得客户端的IP地址. 原文地址:http://www.jbxue.com/article/11338.html 1,js取得IP地址的方法一 <scrip ...