您的位置: 首页 > 技术文档 > 网页制作 > JavaScript 拖放效果分析
Web标准在中国 回到列表 焦点图片轮换第三季——iFocus
 JavaScript 拖放效果分析

作者:cloudgamer 时间: 2008-11-24 文档类型:原创 来自:蓝色理想

第 1 页 JavaScript 拖放效果分析 [1]
第 2 页 JavaScript 拖放效果分析 [2]
第 3 页 JavaScript 拖放效果分析 [3]
第 4 页 JavaScript 拖放效果分析 [4]
第 5 页 JavaScript 拖放效果分析 [5]

拖放效果,也叫拖拽,学名Drag-and-drop ,是最常见的js特效之一。
如果忽略很多细节,实现起来很简单,但往往细节才是难点所在。
这个程序的原型是在做图片切割效果的时候做出来的,那时参考了好几个同类的效果,跟muxrwc和BlueDestiny学习了不少东西。
虽然每次整理都觉得很好了,不过每隔一段时间又会发现得某个地方可以改善,某个地方有错误,某些需求需要实现,就像自己学习的知识那样。

这里考虑到有的人可能只需要简单的拖放,所以有一个 简化版的拖放SimpleDrag ,方便学习。

查看效果  简化版

程序原理

这里以SimpleDrag为例说一下基本原理。

首先初始化程序中要一个拖放对象:

this.Drag = $(drag);

还要两个参数在开始时记录鼠标相对拖放对象的坐标:

this._x = this._y = 0;

还有两个事件对象函数用于添加移除事件:

this._fM = BindAsEventListener(this, this.Move);
this._fS = Bind(this, this.Stop);

分别是拖动程序和停止拖动程序。
拖放对象的position必须是absolute绝对定位:

this.Drag.style.position = "absolute";

最后把Start开始拖放程序绑定到拖放对象mousedown事件:

addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start));

鼠标在拖放对象按住,就会触发Start程序,主要是用来准备拖动,在这里记录鼠标相对拖放对象的坐标:

this._x = oEvent.clientX - this.Drag.offsetLeft;
this._y = oEvent.clientY - this.Drag.offsetTop;

并把_fM拖动程序和_fS停止拖动程序分别绑定到document的mousemove和mouseup事件:

addEventHandler(document, "mousemove", this._fM);
addEventHandler(document, "mouseup", this._fS);

绑定到document可以保证事件在整个窗口文档中都有效。

当鼠标在文档上移动时,就会触发Move程序了,这里就是实现拖动的程序。
通过现在鼠标的坐标值跟开始拖动时鼠标相对的坐标值的差就可以得到拖放对象应该设置的left和top了:

this.Drag.style.left = oEvent.clientX - this._x + "px";
this.Drag.style.top = oEvent.clientY - this._y + "px";

最后放开鼠标后就触发Stop程序结束拖放。
这里的主要作用是把Start程序中给document添加的事件移除:

removeEventHandler(document, "mousemove", this._fM);
removeEventHandler(document, "mouseup", this._fS);

这样一个简单的拖放程序就做好了,下面说说其他扩展和细节部分。

出处:蓝色理想
责任编辑:bluehearts

上一页 下一页 JavaScript 拖放效果分析 [2]

◎进入论坛网页制作WEB标准化版块参加讨论,我还想发表评论

相关文章 更多相关链接
焦点图片轮换第三季——iFocus
不间断滚动图片Javascript特效讲解
JavaScript的陷阱
用javascript修复浏览器中头痛问题
Javascript利用闭包循环绑定事件
热门搜索:CSS Fireworks 设计比赛 网页制作 Dreamweaver Studio8 Flash
站点最新 站点最新列表
《Web标准设计》
如何走出JavaScript初学困境
搜狐博客模板设计大赛获奖名单
50mm的视界
读"设计的3个C"之构图
首届"全国科技动漫大赛"邀请函
《Flash短片轻松学》
HTML与javascript中常用编码浅析
em和strong的区别
《动态网站开发第一步》
栏目最新 栏目最新列表
火星人的耳机
公司正式宣布创业失败
用corelDEAW 12打造唇膏
二行代码解决全部网页木马
一行代码解决iframe挂马
Photoshop制作星空爆炸效果
CorelDraw 12打造休闲裤
Firework如何画特殊的切角图形
Firework打造韩式风格的手提袋
flash实例:打造佛光效果
>> 分页 首页 前页 后页 尾页 页次:1/51个记录/页 转到 页 共5个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文现有 4 条评论 评分:- llllllllllllllllllll + 评分人数: 1 ,平均分: 5.00


tianyazjq110 Publish at 2008-12-8 10:56:49
内容很好。可惜水平不够。。看了老半天,不得理解...
cloudgamer Publish at 2008-12-5 10:00:02
可以用一个覆盖层盖住就可以了
我的blog上有这个的说明,欢迎交流
www.cnblogs.com/cloudgamer/archive/2008/11/17/Drag.html
jingjingangel Publish at 2008-12-3 15:49:10
可是这个拖放效果 如果页面有iframe的话,在iframe上拖动会很迟钝的哦
108518 Publish at 2008-11-25 23:50:18 评分5
好文,学习了!~
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
《美工神话》
《Flash短片轻松学》
Illustrator CS3质感绘画表现技法
大师之路--Photoshop 完全解析
《用户体验要素》
HTML与CSS入门经典(第7版)
作品集 更多内容

七夕壁纸 一汽丰田 永升本田汽车销售公司最终定稿 USB守护神 个人门户模版~~~ 按钮 个人网站设计稿 七喜新年活动