懂视1
懂视101
懂视201
懂视301
懂视401
懂视501
懂视601
懂视701
懂视801
懂视901
懂视1001
懂视1101
懂视1201
懂视1301
懂视1401
懂视1501
懂视1601
懂视1701
懂视1801
懂视1901
文库1
文库101
文库201
文库301
文库401
文库501
文库601
文库701
文库801
文库901
文库1001
文库1101
文库1201
文库1301
文库1401
文库1501
文库1601
文库1701
文库1801
文库1901
投聚财经
全部频道
首页
科技
教育
生活
旅游
时尚
美容
美食
健康
体育
游戏
汽车
家电
您的当前位置:
首页
Bmail联系人飞来飞去效果_javascript技巧
Bmail联系人飞来飞去效果_javascript技巧
来源:投聚财经
好久没来了。本来想利用此贴写一些关于表现,行为和结构分离的东西,但是一直没什么时间,而且这段代码写的很匆忙,所以只好另找时间了。代码在IE6,Firefox1.7,Opera9下运行了一下应该没什么错误,如果有什么问题的话希望大家可以提出来。
其中fly函数块借鉴了Bmail的代码
博客邮箱飞来飞去效果演示
var ev={}; var flyDiv="bxAddrFly";//发送的层 var inceptDiv="SendAddress";//负责接收层效果的控件 var addEvent="addAddress()";//层发送成功后的接收事件 function oo(obj){return (document.getElementById) ? document.getElementById(obj): document.all[obj];} function isNone(str){return str==null||str==""?true:false} //=================兼容Firefox/Event================= //因为要将表现与行为分离所在此处浪费了很多代码 var Browser = new Object(); Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1); if (Browser.isFirefox) { extendEventObject();} function extendEventObject() { window.constructor.prototype.__defineGetter__("event", function(){ var o = arguments.callee.caller; var e; while(o != null){ e = o.arguments[0]; if(e && (e.constructor == Event || e.constructor == MouseEvent)) return e; o = o.caller; } return null; }); Event.prototype.__defineGetter__("srcElement", function () { var node = this.target; while (node.nodeType != 1) node = node.parentNode; return node; }); } window.onload = function(){ var addrTree = oo('tbAddrTree'); addrTree.onmouseover = function(){addrTree_event(event)}; addrTree.onmouseout = function(){addrTree_event(event)}; addrTree.onclick = function(){addrTree_event(event)}; } function addrTree_event(e){ var memberID,tr var ee = e.srcElement; if(ee.tagName=="A"&&e.type=="mouseover"){ee.style.textDecoration="underline"} if(ee.tagName=="A"&&e.type=="mouseout"){ee.style.textDecoration=""} if(e.type=="click"&&e.srcElement.tagName=="A"){ var li=ee.parentNode.parentNode; ev.AddInfo="\""+li.getAttribute("memberName")+"\"<\""+li.getAttribute("email")+"\">" oo(flyDiv).innerHTML=li.getAttribute("memberName"); addrTree_add(e.clientX,e.clientY) } } function addrTree_add(ex,ey){ if(oo(flyDiv).style.display=='none'){oo(flyDiv).style.display=''} //此处获取控件的坐标 var inceptE = oo(inceptDiv); var inceptEX = inceptE.offsetTop; var inceptEY = inceptE.offsetLeft; while(inceptE = inceptE.offsetParent){ inceptEX += inceptE.offsetTop; inceptEY += inceptE.offsetLeft; } ev.flyArr=new Array(ex,ey,inceptEX,inceptEY,10); fly(flyDiv,addEvent); } // function fly(flyObj,flyRun){ var obj,a=ev.flyArr,x,y if(flyObj!=null){ if(ev.flyObj!=null){ window.clearTimeout(ev.flyTm); ev.flyObj.style.top=-900; } a[5]=0; ev.flyObj=oo(flyObj); ev.flyRun=flyRun; } obj=ev.flyObj; if(a[4]==null){a[4]=1} a[5]+=a[4]/Math.sqrt(Math.pow(a[2]-a[0],2)+Math.pow(a[3]-a[1],2)); if(a[5]>1){ obj.style.top=-900; eval(ev.flyRun); ev.flyObj=null; return; } window.clearTimeout(ev.flyTm); x=(a[2]-a[0])*a[5]+a[0]; y=(a[3]-a[1])*a[5]+a[1]; obj.style.left=x; obj.style.top=y; document.body.style.overflowX="hidden"; ev.flyTm=window.setTimeout("fly()",10) } //事件处理 function addAddress() { var key=ev.AddInfo; if (oo(inceptDiv).value.indexOf(key)==-1) { oo(inceptDiv).value+=key+","; } } script>
test0
test1
test2
test3
test4
test5
test6
test7
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
显示全文