js实现iGoogleDivDrag模块拖动层拖动特效的方法
js实现iGoogleDivDrag模块拖动层拖动特效的方法
发布时间:2016-12-30 来源:查字典编辑
摘要:本文实例讲述了js实现iGoogleDivDrag模块拖动层拖动特效的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:js实...

本文实例讲述了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 >

<h1><strong>www.baidu.com</strong></h1>

</div>

<div >

<h1>www.163.com</h1>

</div>

<div >

<h1><strong>www.jb51.net</strong></h1>

</div>

<div><h1>测试二</h1></div>

<div><h1>测试三</h1></div>

<div><h1>测试四</h1></div>

<div><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程序设计有所帮助。

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类