js实现iGoogleDivDrag模块拖动层拖动特效的方法

本文实例讲述了js实现iGoogleDivDrag模块拖动层拖动特效的方法。分享给大家供大家参考。具体实现方法如下:

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js实现iGoogle Div Drag 模块拖动 层拖动效果</title>
<style type="text/css">
*{margin:0px; padding:0px;}
 body{position:relative; width:780px; height:800px; border:1px solid red}
.drag{width:200px; height:100px; border:1px solid #000;margin:20px; background:#fff}
.drag h1{margin:0px; padding:0px; font-size:12px; height:18px; line-height:18px; background:#E0E7F3; text-indent:20px;cursor:move;}
.center{ margin:200px; border:3px solid red}
</style>
<script type="text/javascript"></script>
</head>
<body>
 <div class="drag" >
 <h1><strong>www.baidu.com</strong></h1>
 </div>
 <div class="drag" >
 <h1>www.163.com</h1>
 </div>
 <div class="drag" >
 <h1><strong>www.jb51.net</strong></h1>
 </div>
 <div class="drag"><h1>测试二</h1></div>
 <div class="drag"><h1>测试三</h1></div>
 <div class="drag"><h1>测试四</h1></div>
 <div class="drag"><h1>测试五</h1></div>
</body>
</html>
<script type="text/javascript">
/*
Author  : popper.w
Version : v2.0
*/
var DragZindexNumber=0;
function drag(obj){
var ox,oy,ex,xy,tag=0,mask=0;
if(tag==0){
obj.onmousedown=function(e)
 {  
  if(mask==1){return; }
  obj.style.zIndex=DragZindexNumber++;
     transp(obj,"start")
  tag=1;
  var e = e||window.event;
  ex=getEventOffset(e).offsetX;
  ey=getEventOffset(e).offsetY;
  ox=parseInt(obj.offsetLeft);
  oy=parseInt(obj.offsetTop);
  tempDiv=document.createElement("div");
  with(tempDiv.style)
   {
   width=obj.offsetWidth+"px";
   height=obj.offsetHeight+"px";
   border="1px dotted red";
   position="absolute";
   left=obj.offsetLeft+"px";
   top=obj.offsetTop+"px";
   zIndex=999;
   }
  document.body.appendChild(tempDiv);
  this.ele=tempDiv;
  fDragStart(tempDiv);
  document.body.onmousemove=function(e){
  if(tag==1)
   {
   var e=e||window.event;
   tempDiv.style.left=parseInt(e.clientX)-ex+"px";
   tempDiv.style.top=parseInt(e.clientY)-ey+"px";
   }
  else{if(!tempDiv==null)tempDiv.parentNode.removeChild(tempDiv)}
  }
    tempDiv.onmouseup=function(e)
  {
  var e=e||window.event;
  fDragEnd(tempDiv);
  obj.style.position="absolute";
  movie(obj,parseInt(e.clientX)-ex-19,parseInt(e.clientY)-ey-20);
  tempDiv.parentNode.removeChild(tempDiv);
  tag=0;
  }
  }
 }
}
function movie(o,l,t){
  var a=1;
  mask=1;
  var ol=parseInt(o.offsetLeft);
  var ot=parseInt(o.offsetTop);
  var iTimer=setInterval(function(){
   if(a==10)
    {
  transp(o,"end");
  mask=0;
  clearInterval(iTimer);
  }
   o.style.left=ol+a*(l-ol)/10+"px";
   o.style.top=ot+a*(t-ot)/10+"px";
   a++;
},20);
}
function fCancleBubble(e)
{
 var e = window.event || e;
 if (e.preventDefault) e.preventDefault();
 else e.returnValue = false;
}
function transp(o,mode){
           if(mode=="start"){
   if(document.all){
    o.style.filter = "Alpha(Opacity=50)";
   }else{
    o.style.opacity = 0.5;
   }
   }
    else {
      if(document.all){
    o.style.filter = "Alpha(Opacity=100)";
   }else{
    o.style.opacity = 1;
   }
    }
}
function getOffset(evt)
{
  var target = evt.target;
  if (target.offsetLeft == undefined)
  {
    target = target.parentNode;
  }
  var pageCoord = getPageCoord(target);
  var eventCoord =
  {
    x: window.pageXOffset + evt.clientX,
    y: window.pageYOffset + evt.clientY
  };
  var offset =
  {
    offsetX: eventCoord.x - pageCoord.x,
    offsetY: eventCoord.y - pageCoord.y
  };
  return offset;
}
function getPageCoord(element)
{
  var coord = {x: 0, y: 0};
  while (element)
  {
    coord.x += element.offsetLeft;
    coord.y += element.offsetTop;
    element = element.offsetParent;
  }
  return coord;
}
function getEventOffset(evt)
{
  var msg = "";
  if (evt.offsetX == undefined)
  {
    var evtOffsets = getOffset(evt);
 msg={offsetX:evtOffsets.offsetX,offsetY:evtOffsets.offsetY};
  }
  else
  {
 msg={offsetX:evt.offsetX,offsetY:evt.offsetY};
  }
  return msg;
}
function fDragStart(XEle)
{
 switch(fCkBrs())
 {
   case 3:
    window.getSelection().removeAllRanges();
    break;
   
   default:
    XEle.setCapture();
    break;
 }
}
function fDragEnd(XEle)
{
 switch(fCkBrs())
 {
   case 3:
    window.getSelection().removeAllRanges();
    break;
   
   default:
    XEle.releaseCapture();
    break;
 }
}
function fCkBrs()
{
 switch (navigator.appName)
 {
  case 'Opera': return 2;
  case 'Netscape': return 3;
  default: return 1;
 }
}
var element=document.getElementsByTagName("div");
for(var i=0;i<element.length;i++){
  if(element[i].className=="drag"){
  drag(element[i])}
 
}
</script>

希望本文所述对大家的javascript程序设计有所帮助。

(0)

相关推荐

  • js 鼠标拖动对象 可让任何div实现拖动效果

    js鼠标拖动对象: 复制代码 代码如下: //定义鼠标拖动对象 drag=function (a,o){      var d=document;if(!a)a=window.event;         if(!a.pageX)a.pageX=a.clientX;         if(!a.pageY)a.pageY=a.clientY;      var x=a.pageX,y=a.pageY;      if(o.setCapture)          o.setCapture();

  • js通过八个点 拖动改变div大小的实现方法

    复制代码 代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Resize</title> <style type="text/css"> #rRightDown,#rLeftDown,#rLeftUp,#rRightUp,#rRigh

  • js实现的八点拖动修改div大小的代码

    Resize #rRightDown,#rLeftDown,#rLeftUp,#rRightUp,#rRight,#rLeft,#rUp,#rDown{ position:absolute;background:#C00;width:6px;height:6px;z-index:5;font-size:0;} #rLeftDown,#rRightUp{cursor:ne-resize;} #rRightDown,#rLeftUp{cursor:nw-resize;} #rRight,#rLeft

  • 代码短小的js div层拖动实现代码[兼容IE与Firefox]

    var ie=document.all; var nn6=document.getElementById&&!document.all; var isdrag=false; var x,y; var dobj; function movemouse(e) { if (isdrag) { dobj.style.left = nn6 ? tx + e.clientX - x : tx + event.clientX - x; dobj.style.top = nn6 ? ty + e.clie

  • js拖动div 当鼠标移动时整个div也相应的移动

    HTML代码如下,其中,要拖动的div为最外层的div 复制代码 代码如下: <div id="dialog_createUserGroup" class="dialog_main" style=""> <div id="McreateUserGroup"> <div class="title"> <span class="poptitle"&g

  • js实现可拖动DIV的方法

    随着时代的变化,越来越感觉到js的重要性,js不仅可以做web页面(如Ext框架),还可以做一些web的特效,这些特效不仅兼容PC,而且兼容手机端,毕竟是基于浏览器的,和平台没关系.现在微软的windows8 系统的App都可以用js开发了,大家有时间可以去尝试一下. 现在切入正题,说一下js 实现可拖动Div.实现这个功能我们先说一下思路: 1.捕捉鼠标div的mousedown事件 2.捕捉 document的   mousemove事件 3.取消事件 然后我们看一下代码: 复制代码 代码如

  • js实现div拖动动画运行轨迹效果代码分享

    本文实例讲述了js div拖动动画运行轨迹效果.分享给大家供大家参考.具体如下: 这是一款基于js实现的div拖动动画运行轨迹效果源码,是一款原生js div拖动效果制作鼠标拖动div动画运行轨迹效果代码.可以选择[记住轨迹]与[不记住轨迹]两种拖动显示模式,从而显示出不同的拖动效果. 运行效果图:                                        -------------------查看效果 下载源码------------------- 小提示:浏览器中如果不能

  • js实现iGoogleDivDrag模块拖动层拖动特效的方法

    本文实例讲述了js实现iGoogleDivDrag模块拖动层拖动特效的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.or

  • 纯js实现的积木(div层)拖动功能示例

    本文实例讲述了纯js实现的积木(div层)拖动功能.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>拖动</title> <style type="text/css"> </style> </head> <bo

  • JS实现随机乱撞彩色圆球特效的方法

    本文实例讲述了JS实现随机乱撞彩色圆球特效的方法.分享给大家供大家参考.具体实现方法如下: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS实现的随机乱撞的彩色圆球特效代码</title> <style> body{ font-family: 微软雅黑; } body,h1{ margin

  • js实现九宫格图片半透明渐显特效的方法

    本文实例讲述了js实现九宫格图片半透明渐显特效的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <title>九宫格图片半透明渐显效果</title> <body> <STYLE type=text/css>.invisible {  FILTER: alpha(opacity=0) } </STYLE> <SCRIPT language=JavaScript1.2> <!-- f

  • JS实现定时自动关闭DIV层提示框的方法

    本文实例讲述了JS实现定时自动关闭DIV层提示框的方法.分享给大家供大家参考.具体分析如下: 这里用JS设定时间去控制指定ID的DIV层是否显示,可以实现一个自动关闭的提示框,时间一到,马上关闭,这样会使你的网页更人性一点,代码其实比你想像的还要简单,就一行代码. <title>自动关闭的DIV层</title> <body onLoad=setTimeout("abc.style.display='none'",5000)> <div id=

  • node.js缺少mysql模块运行报错的解决方法

    发现问题 在用node.js连接数据库,运行报错:cannot find module 'mysql: 然后 在管理员和用户下分别用npm安装数据库但是都是失败: 解决方法 按照错误日志应该是找不到文件夹,无法打开package.json这个文件,刚开始没有理解这个错误,最后我进入到project目录运行npm安装数据库成功: 在项目的modules下面也有这个模块了: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对

  • Node.js利用debug模块打印出调试日志的方法

    前言 大家都知道在node程序开发中时,经常需要打印调试日志.用的比较多的是debug模块,比如express框架中就用到了.下文简单举几个例子进行说明.文中相关代码示例,可在这里找到. 备注:node在0.11.3版本也加入了util.debuglog()用于打印调试日志,使用方法跟debug模块大同小异. 基础例子 首先,安装debug模块. npm install debug 使用很简单,运行node程序时,加上DEBUG=app环境变量即可. /** * debug基础例子 */ var

  • node.js中debug模块的简单介绍与使用

    前言 相信使用node.js的朋友们都知道,一般在nodejs需要进行调试的时候,可以使用console.log()方法来将调试信息输出到控制台,当发布到生产环境的时候,需要将这些调试信息都注释掉,为了方便切换而不需要改动程序代码,可以使用nodejs的debug模块 var debug = require('debug')('myapp:main'); debug('现在的时间是 %s' , new Date()); 如果是开发环境,只需要设置环境变量 这样就可以输出调试信息 如果需要关闭调试

  • Js可拖拽放大的层拖动特效实现方法

    本文实例讲述了Js可拖拽放大的层拖动特效实现方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

  • jQuery实现DIV层淡入淡出拖动特效的方法

    本文实例讲述了jQuery实现DIV层淡入淡出拖动特效的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <html> <head> <title>jQuery实现DIV层淡入淡出的拖动效果)</title> <style type="text/css"> #div2 {     position:absolute;     width:400px;     height:300px;     border

随机推荐