编码环境:asp.net mvc3  html5

运行环境:firefox浏览器通过。

一:有关html5的拖放功能,网上介绍的一大把,我将自己学习到的知识点总结如下:

1:全局属性draggable

  具有拖放功能的一个全局属性draggable,true:可拖动;false:不可拖动;auto:视作浏览器支持情况而定;draggable:这个值估计也是可拖动的。

2:事件

既是拖放,得针对两个实体,一个是源实体,一个是目标实体,就是将我们要拖动的源,放到我们要放的目的地,其中涉及到的事件有:

源实体:

    dragstart:在被拖拽的元素开始拖拽的时候触发。

    dragend:在被拖拽的元素拖拽完毕后触发,此事件是在drop(放)的动作之后。

目标实体

    dragenter:拖拽元素刚进入目标区域时触发,只会触发一次。

    dragover:拖拽元素在目标区域移动是触发。只要有移动就会触发。

    dragleave:拖拽元素在离开目标区域时触发。

    ondrop:拖拽元素放置在目标区域时触发。

完成一次拖动事件的整个过程为:dragstart-->dragenter-->dragover-->drop-->dragend.

关于DataTransfer对象:
该对象用来支持拖拽时数据存储功能,具体的属性和方法可以参考这里,说的好清楚。

二:代码部分。

html代码:

@{Layout = null;
}
<!DOCTYPE html>
<html>
<head><title>拖动测试</title><link href="/Content/group.css" rel="stylesheet" type="text/css" /><script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script><script src="/Scripts/group.js" type="text/javascript"></script>
</head>
<body>
<div style="color:Maroon;font-size:20px; font-weight:bold">基于html5之拖(drag)放(drop)实现换装小游戏</div><div style="margin: 20px;"><div class="containerpic" draggable="true" ondragover="grouppicover(this,event);" ondrop="groupdrop2(this,event);"><img class="pic" alt="pic" src="/Content/group/pic0.png" draggable="true" /><div class="pic divpic1"  draggable="true" contenteditable=true></div><div class="pic divpic2" draggable="true" contenteditable=true></div><img class="pic" alt="pic" src="/Content/group/pic4.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic5.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic6.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic7.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic8.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic9.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic10.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic11.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic12.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic13.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic14.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic15.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic16.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic17.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic18.png" draggable="true" /><img class="pic" alt="pic" src="/Content/group/pic19.png" draggable="true" /></div><div class="grouppic" draggable="true" ondragenter="groupenter(this,event)" ondragover="grouppicover(this,event);"ondrop="groupdrop(this,event);"></div></div>
</body>
</html>

js代码:

var dragSrc;
$(function () {$(".containerpic .pic").each(function () {this.ondragstart = function (ev) {$(this).addClass("pic_select");ev.dataTransfer.effectAllowed = "move";ev.dataTransfer.setData("text", ev.target.innerHTML);ev.dataTransfer.setDragImage(ev.target, 0, 0);dragSrc = this;};this.ondragend = function (ev) {$(this).removeClass("pic_select");};});
});function dragstartimg(obj, ev) {$(obj).addClass("pic_select");ev.dataTransfer.effectAllowed = "move";ev.dataTransfer.setData("text", ev.target.innerHTML);ev.dataTransfer.setDragImage(ev.target, 0, 0);dragSrc = obj;obj.ondragend = function (ev) {$(obj).removeClass("pic_select");};
}
function groupenter(obj, Event) {$(obj).addClass("pic_over");
}
function grouppicover(obj, Event) {Event.preventDefault(); //阻止默认事件
}
function groupdrop(obj, Event) {if (dragSrc) {Event.preventDefault(); //阻止默认事件var x = document.documentElement.scrollLeft + Event.pageX;var y = document.documentElement.scrollTop + Event.pageY;var imgwidth = $(dragSrc).attr("offsetWidth");var imgheight = $(dragSrc).attr("offsetHeight");if (dragSrc.nodeName.toString() == "DIV") {$(obj).append("<div class=\"divpic1\" draggable=true ondragstart=\"dragstartimg(this,event)\"; contenteditable=true style=\"position:fixed;left:" + x + "px;top:" + y + "px;\"></div>");} else {$(obj).append("<img src=" + $(dragSrc).attr("src") + " draggable=true ondragstart=\"dragstartimg(this,event)\"; contenteditable=true style=\"position:fixed;left:" + x + "px;top:" + y + "px;\" />");}$(dragSrc).remove();$(obj).removeClass("pic_over");Event.stopPropagation();}return false;
}
function groupdrop2(obj, Event) {if (dragSrc) {Event.preventDefault(); //阻止默认事件var x = document.documentElement.scrollLeft + Event.pageX;var y = document.documentElement.scrollTop + Event.pageY;   var imgwidth = $(dragSrc).attr("offsetWidth");var imgheight = $(dragSrc).attr("offsetHeight");$(obj).append("<img class=\"pic\" src=" + $(dragSrc).attr("src") + " draggable=true ondragstart=\"dragstartimg(this,event)\"; contenteditable=true style=\"position:fixed;left:" + x + "px;top:" + y + "px;\" />");$(dragSrc).remove();$(obj).removeClass("pic_over");Event.stopPropagation();//阻止事件冒泡}return false;
}

css代码:

.containerpic
{width: 400px;float: left;min-height: 800px;padding: 20px;border: 2px solid #f4f4f4;
}
.pic
{max-width: 50px;
}.divpic1
{background: url("/Content/group/pic2.png") no-repeat 0 0;width: 114px;max-width: 114px;font-size: 12px;color:Maroon;height: 75px;padding: 10px;float: left;
}
.divpic2
{background: url("/Content/group/pic3.png") no-repeat 0 0;width: 96px;font-size: 12px;max-width: 96px;height: 61px;color:Maroon;padding: 10px;float: left;
}.pic_select
{border: 1px dashed Silver;background-color: #c3f1f7;
}.grouppic
{border: 3px dashed Silver;width: 800px;height: 800px;position: fixed;top: 50px;left: 500px;
}
.pic_over
{border: 3px dashed Maroon;
}

基于html5拖(drag)放(drop)实现换装小游戏相关推荐

  1. HTML5 仿QT 示例Drag and Drop Robot 换装机器人

    起源 在Qt的示例中看到了一个有趣的demo,截图如下: 这个demo的名字叫Drag and Drop Robot,简单概括而言,在这个demo中,可以把机器人四周的颜色拖动到机器人的各个部位,比如 ...

  2. ***JAVA*和*Eclipse*开发一个换装小游戏**

    JAVA和Eclipse开发一个换装小游戏** 家有一女如有一宝,最近女朋友的少女心有点爆棚,作为一个计算机专业的人,我的情商简直是低到吓人,但是我还是想到了,亲自给女朋友做一个换装的小游戏,来满足女 ...

  3. html组态图动态拖拽,基于HTML5的Drag and Drop生成图片Base64信息

    HTML5的Drag and Drop是很不错的功能,网上使用例子较多如 http://html5demos.com/drag ,但这些例子大部分没实际用途,本文将搞个有点使用价值的例子,通过Drag ...

  4. 手机游戏缺少index_264.html,html5手机端大家来找茬微信小游戏代码

    特效描述:html5 手机端大家来找茬 微信小游戏代码.html5手机端大家来找茬微信小游戏代码 代码结构 1. HTML代码 重新开始 剩余时间: 30 s 分数: 0 点 击 开 始 游 戏 护眼 ...

  5. html拖放数据库字段,利用HTML5拖放(Drag 和 Drop)实现Table间数据的交互

    前言 作为开发者,我们总是会不经意间的遇到一些令人头疼的需求.比如五彩斑斓的黑,根据手机壳变换APP的颜色等等,你说怎么办.虽然在一般情况下不会这么棘手,但是有些需求刚拿到的时候还是会一筹莫展. 表格 ...

  6. 基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  7. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  8. 基于 python 的德云消消乐益智小游戏设计论文+源码

    计科在读分享自己做过的课题设计作业 有意可私信了解 目录 第一章 引言 II 1.1 课题背景 1 1.2 目的和意义 1 1.3 国内外的发展现状 1 1.4 开发环境 1 第二章系统开发平台的阐述 ...

  9. HTML5 拖放Drag和drop用法以及事件介绍

    dragstart:拖拽开始时在被拖拽元素上触发此事件 drag:拖拽过程中被拖拽的元素会持续不断地发drag事件. dragend:鼠标在拖放目标上释放时,在拖搜元素上触发,将元素从浏览器拖放到操作 ...

最新文章

  1. 自己用C#写一个采集器、蜘蛛(zz)
  2. DL-1 用一元二次方程 y=x^2+b 构建神经网络
  3. 取代现有电商和实体店菜市场的新模式
  4. Java 序列化Serializable详解(附详细例子)
  5. datalength,求字符串的字节数
  6. Freenom.com的域名+github pages+netlify的CDN加速
  7. Angular InjectionToken的一个具体使用例子
  8. 做产品,大公司克制,小公司放纵
  9. 3月起这些新规将实施:从事网络招聘服务应取得许可证
  10. LC 231 power of 2
  11. EXT2的文件系统装载之内核函数ext2_fill_super分析
  12. livebos数据库
  13. 寒假第二周 总结与反思
  14. 2016教师节微信祝福语大全
  15. ODOO13 有同志留言,想看看QWEB渲染widget实现自定义按钮。今天,他来撩
  16. 前端开发公众号的调试
  17. 某游戏客户流失情况数据分析
  18. thinkphp6+swoole websocket使用教程自研路线不建议使用
  19. CCF 俄罗斯方块(满分代码 + 解题思路 + 技巧总结)201604 - 2
  20. 什么是必选?和招标有什么区别?

热门文章

  1. dsp,dsw,ncb,opt,clw,plg,aps
  2. 11_DCMotor_R_Controled
  3. 传统制作 VS AI制作,如何一键制作PPT ?
  4. python字典更新_python如何更新字典?
  5. CocosCreator系列——接入原生微信登陆功能
  6. javascript 中的 let 作用域
  7. K8s容器的资源单位理解
  8. macOS Monterey 12.6 (21G115) Boot ISO 原版可引导镜像
  9. 使用ts_calibrate校准触摸屏
  10. 2021年新版电影小程序商业版+前端(含教程、采集)