Javascript教程:拖放效果研究

2016-02-20 00:53 9 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享Javascript教程:拖放效果研究的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - Web开发 】

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

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

程序原理

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

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

this.Drag = $(drag);

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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添加的事件移除:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

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

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

来源:http://www.tulaoshi.com/n/20160220/1632763.html

延伸阅读
标签: Web开发
JavaScript 是一种基于对象(Object)和事件驱动(Event Driven)并具有安全性能的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言(Java小程序)一起实现在一个Web页面中链接多个对象,与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它的出现弥补了HTML语言的缺陷,它是Java...
标签: 电脑入门
群里有很多朋友都问我PPT里有大量的图片如何才更好的去展示呢?我个人觉得方法有很多,而且要分清楚你的PPT所要应用的场合,那么今天借用一下小田同志所写的《PPT图片切换效果研究》一文来讲解一下PPT图片切换的新思路。 现在进入正题,了解iPhone的朋友都知道其图片的浏览切换效果是非常出色的,不了解的或者没有iPhone的同志可以和我一样...
标签: Web开发
function sAlert(str){    var msgw,msgh,bordercolor;    msgw=400;//提示窗口的宽度    msgh=100;//提示窗口的高度    titleheight=25 //提示窗口标题高度    bordercolor="#336699";//提示窗口的边框颜色    titlecolor="#99CCFF";//提示窗口的标题颜色    ...
标签: Web开发
今天我们开始第十二讲,今天我们将仔细看一下Drag.Move一个很强大的MooTools类,它可以让你给你的web应用添加拖放功能。它的使用和我们见过的其他的插件类似:首先你使用new关键字来创建一个Drag.Move对象并赋值给一个变量,然后你再定义你的选项和事件。这就是全部要做的事情,不过你一定要注意一下下面的例子中描述的IE的CSS怪异现象。 基...
标签: Web开发
些很实用且必用的小脚本代码: 脚本1:进入主页以后自动播放声音  embed src="pnm://10.13.31.90/~kayvin/mihunji.rm" hidden=true autostart=true loop=true  脚本2:进入主页后自动最大话,省的去在自己单击了  script  self.moveTo(0,0)  self.resizeTo(screen.availWidth,screen.availHe...

经验教程

862

收藏

13
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部