关于 HTML5 中的拖动功能。 更多信息可以查看我们 HTML 教程中的 HTML5 拖放。以下 我只做一下简介。

1 如果你想让元素变得可拖动,首先 你得对元素设置 draggable 属性 此属性可以让元素变得可以拖动,当然 链接和 图片是默认允许拖动的 可以不对其设置 draggable 属性。

2 元素在拖动下  会触发以下事件

   2.1 在被拖动目标上触发的事件

    ondragstart——即用户开始拖动元素时触发

    ondrag -——元素正在拖动时触发

    ondragend - 用户完成元素拖动后触发

  2.2 在其他对象容器中触发的事件

    ondragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件

    ondragover - 当某被拖动的对象在另一对象容器范围内拖动时触发此事件

    ondragleave - 当被鼠标拖动的对象离开其容器范围内时触发此事件

    ondrop - 在一个拖动过程中,释放鼠标键时触发此事件

 /* 拖动时触发*/
document.addEventListener("dragstart", function(event) {
//dataTransfer.setData()方法设置数据类型和拖动的数据
event.dataTransfer.setData("Text", event.target.id);
// 拖动 p 元素时输出一些文本
document.getElementById("demo").innerHTML = "开始拖动 p 元素.";
//修改拖动元素的透明度
event.target.style.opacity = "0.4";
});
//在拖动p元素的同时,改变输出文本的颜色
document.addEventListener("drag", function(event) {
document.getElementById("demo").style.color = "red";
});
// 当拖完p元素输出一些文本元素和重置透明度
document.addEventListener("dragend", function(event) {
document.getElementById("demo").innerHTML = "完成 p 元素的拖动";
event.target.style.opacity = "1";
});
/* 拖动完成后触发 */
// 当p元素完成拖动进入droptarget,改变div的边框样式
document.addEventListener("dragenter", function(event) {
if ( event.target.className == "droptarget" ) {
event.target.style.border = "3px dotted red";
}
});
// 默认情况下,数据/元素不能在其他元素中被拖放。对于drop我们必须防止元素的默认处理
document.addEventListener("dragover", function(event) {
event.preventDefault();
});
// 当可拖放的p元素离开droptarget,重置div的边框样式
document.addEventListener("dragleave", function(event) {
if ( event.target.className == "droptarget" ) {
event.target.style.border = "";
}
});
/*对于drop,防止浏览器的默认处理数据(在drop中链接是默认打开)
复位输出文本的颜色和DIV的边框颜色
利用dataTransfer.getData()方法获得拖放数据
拖拖的数据元素id("drag1")
拖拽元素附加到drop元素*/
document.addEventListener("drop", function(event) {
event.preventDefault();
if ( event.target.className == "droptarget" ) {
document.getElementById("demo").style.color = "";
event.target.style.border = "";
var data = event.dataTransfer.getData("Text");
event.target.appendChild(document.getElementById(data));
}
});

  传送门:http://blog.csdn.net/ssisse/article/details/52628739

最新文章

  1. String,StringBuffer与StringBuilder的区别??
  2. Codeforces Round #370 (Div. 2) E. Memory and Casinos (数学&&概率&&线段树)
  3. oracle中的日期:周月季年,首天未天。
  4. 【Beta】第三次任务发布
  5. angularjs笔记(三)
  6. Jenkins安装部署
  7. [mock]12月28日
  8. hdu3525
  9. MongoDB如何设置权限(类似关系型数据库的用户名和密码)
  10. j2ee常用包的作用
  11. WEB版一次选择多个图片进行批量上传(WebUploader)的解决方案
  12. alpha-咸鱼冲刺day6-紫仪
  13. [LeetCode] Pyramid Transition Matrix 金字塔转变矩阵
  14. Fiddler证书安装(查看HTTPS)
  15. STL—之迭代器,文中推荐的博客很给力
  16. 【原】Java学习笔记010 - 数组
  17. Tensor是神马?为什么还会Flow?
  18. [POJ2965]The Pilots Brothers' refrigerator (搜索/位运算)
  19. Linker Scripts3--SECTIONS Command
  20. 【转】OAuth的改变

热门文章

  1. JWT+ASP.NET MVC 时间戳防止重放攻击
  2. ueditor图片上传插件的使用
  3. httpclient 用法
  4. Could not load file or assembly '$SharePoint.Project.AssemblyFullName$'
  5. 使用Commons Email发送邮件
  6. Flask基础-配置,路由
  7. Django 框架中定时触发脚本
  8. Java 日期加减
  9. CSS3的三大特性
  10. 双向一对一映射@OneToOne