可以拖动的div 实现代码第1/2页

要实现div的任意拖动,我们不妨分析一下整个过程。
当鼠标点击div时,触发一个事件,让div的位置属性(left,top)随着鼠标位置变化而变化,当鼠标释放后,div的位置属性就用了鼠标释放时的位置。
鼠标点击时触发事件是很容易做到的,只要在div的标签里加上onmouseclick就可以了,现在我们要解决的问题是如何让div的位置随着鼠标的位置变化而变化。
虽然这可能是一个很简单的推理过程,不过还是罗嗦点说清楚吧。div的left和top是div左上角的坐标,当我们把鼠标移到div中点击的时候,无疑鼠标的坐标和div的坐标是不一致的,这时候如果我们简单的让div的坐标等于鼠标的坐标,那么看起来的效果就不是那么完美了,所以我们先要得到鼠标的坐标和div坐标的差,然后在鼠标移动到的时候,在鼠标坐标上减去这个差来得到div的坐标(如果不太明白,那就先补习一下网页的基础知识)。
接下来的事情就简单了,当鼠标移动的时候,我们不断的计算得到div的坐标,并改变,在鼠标释放的时候,这个事件就被移除。
整个js函数如下:
function beginDrag(elementToDrag,event)
{
var deltaX=event.clientX-parseInt(elementToDrag.style.left);
var deltaY=event.clientY-parseInt(elementToDrag.style.top);
if(document.addEventListener)
{
document.addEventListener(”mousemove”,moveHandler,true);
document.addEventListener(”mouseup”,upHandler,true);
//document.addEventListener(”mouseout”,upHandler,true);
}
else if(document.attachEvent)
{
document.attachEvent(”onmousemove”,moveHandler);
document.attachEvent(”onmouseup”,upHandler);
//document.attachEvent(”onmouseout”,upHandler);
}
if(event.stopPropagation) event.stopPropagation();
else event.cancelBubble=true;
if(event.preventDefault) event.preventDefault();
else event.returnValue=false;
function moveHandler(e)
{
  if (!e) e=window.event; //如果是IE的事件对象,那么就用window.event
  //全局属性,否则就用DOM二级标准的Event对象。
elementToDrag.style.left=(e.clientX-deltaX)+”px”;
elementToDrag.style.top=(e.clientY-deltaY)+”px”;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}
function upHandler(e)
{
if(document.removeEventListener)
{
document.removeEventListener(”mouseup”,upHandler,true);
document.removeEventListener(”mousemove”,moveHandler,true);}
else
{
document.detachEvent(”onmouseup”,upHandler);
document.detachEvent(”onmousemove”,moveHandler);}
}
if (!e) e=window.event;
if(e.stopPropagation) e.stopPropagation();
else e.cancelBubble=true;
}

当前1/2页 12下一页阅读全文

(0)

相关推荐

  • 可以拖动的div 实现代码第1/2页

    要实现div的任意拖动,我们不妨分析一下整个过程. 当鼠标点击div时,触发一个事件,让div的位置属性(left,top)随着鼠标位置变化而变化,当鼠标释放后,div的位置属性就用了鼠标释放时的位置. 鼠标点击时触发事件是很容易做到的,只要在div的标签里加上onmouseclick就可以了,现在我们要解决的问题是如何让div的位置随着鼠标的位置变化而变化. 虽然这可能是一个很简单的推理过程,不过还是罗嗦点说清楚吧.div的left和top是div左上角的坐标,当我们把鼠标移到div中点击的时

  • jQuery 可以拖动的div实现代码 脚本之家修正版

    当然,代码使用起来也非常的方便,很多东西就不用自己再去琢磨了. 研究的过程中顺便用jQuery实现了一个div的拖动,代码附于本文结尾. 实现的思路请参考我的可以拖动的DIV(二)一文. 在参考jQuery中文网站中的例子时,我发现他们在div窗口标题栏触发click事件时,将div的位置移上了一些,而mouseup的事件注册在整个div窗口上,这个思路让我很受启发,解决了鼠标移动很快而div不能跟上导致的错误,非常好的解决办法. 另外,请注意事件起泡,在jQuery以及任何实现div拖动的js

  • 可以用鼠标拖动的DIV实现思路及代码

    复制代码 代码如下: <html><head> <title>测试可动div</title> <script language='javascript' type='text/javascript'> var offset_x; var offset_y; function Milan_StartMove(oEvent) { var whichButton; if(document.all&&oEvent.button==1) w

  • jQuery实现拖动效果的实例代码

    jQuery实现拖动效果的实例代码,具体代码如下所示: <!DOCTYPE html> <html> <head> <style> div{ width:100px; height:100px; background:red; position:absolute;} </style> <script type="text/javascript" src="js/jquery-1.11.3.js">

  • js实现拉伸拖动iframe的具体代码

    左边iframe放树目录,右边的iframe放index页.拖鼠标同时控制2个iframe的宽高.期待有人能改进.操作方法:鼠标指到2个iframe中间,可以水平拖,纵向拖(控制高度)缺点:CSDN页面放开鼠标后才改大小,不占CPU资源. 这个是实时改大小,所以速度太慢,希望有人来改改.我是不想弄了,反正又没用什么特别的技术.提示:拖动的秘密就在filter:alpha(opacity=0)这一句 复制代码 代码如下: <html><script language="javas

  • 鼠标拖动改变DIV等网页元素的大小的实现方法

    1.初次实现 1.1 html代码 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>div change

  • 使用jQuery的easydrag插件实现可拖动的DIV弹出框

    EasyDrag 是一个用来实现页面元素拖拉的 jQuery 插件. 在没遇到easydrag插件之前,想实现一个弹出框并不是一件轻而易举的事情! 人们常说没有不劳而获的事情,但在编码的世界中却不是这样.更多的开源框架方面了我们,也毒害了我们! 废话少说,先看效果: 全部代码: <!DOCTYPE HTML> <html> <head> <title>easydrag实现可拖动的DIV弹出框</title> <style> /* 重置

  • JavaScript实现可拖拽的拖动层Div实例

    本文实例讲述了JavaScript实现可拖拽的拖动层Div.分享给大家供大家参考.具体如下: 这是一个完美的JS拖拽效果,带拖尾的JavaScript拖动层代码,经过了多次优化修正,复制节点的方法不错,值得JS爱好者学习,同时代码修正了给拖拽元素加ondblclick事件无效的问题,兼容多种浏览器,拷贝代码即可运行使用. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

  • jquery实现仿JqueryUi可拖动的DIV实例

    本文实例讲述了jquery实现仿JqueryUi可拖动的DIV.分享给大家供大家参考.具体如下: 这是用Jquery写的代码,仿JQUERYUI的Draggable或者是Dialog,希望大家喜欢,写的一个小东西.参考了下网上的其他人写的类似代码,但是不完全模仿 <html> <head> <meta charset="utf-8" /> <style type="text/css"> #typewords { } #

  • 利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值

    原来我们要写一个客户端的特效,要写一两天的JavaScript,然后再调试一两天,才可以看见端倪.现在我们只要使用JQuery和他的 plugin,就可以任意的实现我们脑海中的特效,感谢他们的编写者对人类的贡献(一百个西红柿砸过来..............). 我今天实现的需求是一个需要从列表页面中选择要导出到word中的列,然后在将选中列的内容导出到word中,同时为了增加通用性,列的个数不是固定的,也就是说这张表格可能是4列,也可能是5列,待选择的列数目不固定.例如:有下面的一张表格,然后

随机推荐