<!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>Untitled Document</title> <style type="text/css"> <!-- #apDiv1 { position:absolute; left:300px; top:100px; width:100px; height:100px; z-index:1; background-color: #FF00FF; } #apDiv2 { position:absolute; left:402px; top:100px; width:100px; height:100px; z-index:2; background-color: #00FFFF; } #apDiv3 { position:absolute; left:402px; top:200px; width:100px; height:100px; z-index:3; background-color: #99FF00; } #apDiv4 { position:absolute; left:300px; top:200px; width:100px; height:100px; z-index:4; background-color: #FFFF00; } --> </style> </head><body>
<div id="apDiv1"></div> <div id="apDiv2"></div> <div id="apDiv3"></div> <div id="apDiv4"></div> </body> </html> <script language="javascript" type="text/javascript"> function $(pId){ return document.getElementById(pId); }function JPos(){
}
JPos.getAbsPos = function(pTarget){
var _x = 0; var _y = 0; while(pTarget.offsetParent){ _x += pTarget.offsetLeft; _y += pTarget.offsetTop; pTarget = pTarget.offsetParent; } _x += pTarget.offsetLeft; _y += pTarget.offsetTop;return {x:_x,y:_y};
}function JAniObj(){
this.obj = null; this.interval = null;this.orgPos = null;
this.targetPos = null;this.orgSize = {w:50,y:50}; //初始长宽
this.targetSize = {w:100,y:100}; //目标长宽 this.step = {x:10,y:10}; //步长 x:x方向 y:y方向 this.alpha = {s:10,e:90,t:10}; //透明度,s初始,e结束,t步长 }function JAni(){
var self = this; var aniObjs = {};var getCurrentStyleProperty = function(pObj,pProperty){
try{ if(pObj.currentStyle) return eval("pObj.currentStyle." + pProperty); else return document.defaultView.getComputedStyle(pObj,"").getPropertyValue(pProperty); }catch(e){ alert(e); } }this.popup = function(pDiv,pOrgSize,pTargetSize,pStep,pAlpha){
var aniObj = new JAniObj();
aniObjs[pDiv] = aniObj;with(aniObj){
obj = $(pDiv); orgPos = JPos.getAbsPos(obj); orgSize = pOrgSize; targetSize = pTargetSize; step = pStep; alpha = pAlpha;with(obj.style){
overflow = "hidden"; position = "absolute"; width = pOrgSize.w + "px"; height = pOrgSize.h + "px"; left = orgPos.x + "px"; top = orgPos.y + "px"; if(document.all){ filter = "Alpha(opacity=" + pAlpha.s + ")"; }else opacity = pAlpha.s / 100; } }aniObj.interval = setInterval("popup_('" + pDiv + "')",10);
}popup_ = function(pDivId){
pObj = aniObjs[pDivId];var w = parseInt(pObj.obj.style.width);
var h = parseInt(pObj.obj.style.height);if(w >= Math.abs(pObj.targetSize.w) && h >= Math.abs(pObj.targetSize.h)){
clearInterval(pObj.interval); if(document.all) pObj.obj.style.filter = "Alpha(opacity=" + pObj.alpha.e + ")"; else pObj.obj.style.opacity = pObj.alpha.e / 100;
delete aniObjs[pObj.obj.id];
}else{ if(w < Math.abs(pObj.targetSize.w)) w += pObj.step.x;if(h < Math.abs(pObj.targetSize.h))
h += pObj.step.y;if(document.all){
var pattern = /opacity=(\d{1,3})/; var result = pattern.exec(pObj.obj.style.filter); if(result != null){ if(result[1] < pObj.alpha.e) pObj.obj.style.filter = "Alpha(opacity=" + (result[1] + pObj.alpha.t) + ")" else pObj.obj.style.filter = "Alpha(opacity=" + pObj.alpha.e + ")"; } }else{ if(pObj.obj.style.opacity < pObj.alpha.e / 100){ pObj.obj.style.opacity = parseFloat(pObj.obj.style.opacity) + pObj.alpha.t / 100; }else pObj.obj.style.opacity = pObj.alpha.e / 100; } }pObj.obj.style.width = w + "px";
pObj.obj.style.height = h + "px";if(pObj.targetSize.w < 0){
var vLeft = parseInt(getCurrentStyleProperty(pObj.obj,"left")); vLeft = isNaN(vLeft) ? 0 : vLeft; pObj.obj.style.left = vLeft - pObj.step.x + "px"; }if(pObj.targetSize.h < 0){
var vTop = parseInt(getCurrentStyleProperty(pObj.obj,"top")); vTop = isNaN(vTop) ? 0 : vTop; pObj.obj.style.top = vTop - pObj.step.y + "px"; } } }var ani = new JAni();
ani.popup( "apDiv1", {w:50,h:50}, //初始长宽 {w:200,h:200}, //目标长宽 {x:8,y:8}, //步长 {s:10,e:80,t:10}//透明度 起始,结束,步长 );ani.popup(
"apDiv2", {w:50,h:50}, //初始长宽 {w:-200,h:200}, //目标长宽 {x:8,y:8}, //步长 {s:10,e:40,t:2}//透明度 起始,结束,步长 );ani.popup(
"apDiv3", {w:50,h:50}, //初始长宽 {w:-200,h:-200},//目标长宽 {x:8,y:8}, //步长 {s:10,e:40,t:10}//透明度 起始,结束,步长 );ani.popup(
"apDiv4", {w:50,h:50}, //初始长宽 {w:200,h:-200},//目标长宽 {x:8,y:8}, //步长 {s:10,e:50,t:10}//透明度 起始,结束,步长 ); </script>