最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JS动画效果代码3_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 20:38:57
文档

JS动画效果代码3_javascript技巧

JS动画效果代码3_javascript技巧:慢慢来,这次实现了向任意方向扩展! 代码如下: Untitled Document #apDiv1 { position:absolute; left:300px; top:100px; width:100px; height:100px; z-index:1; background-color: #FF00FF
推荐度:
导读JS动画效果代码3_javascript技巧:慢慢来,这次实现了向任意方向扩展! 代码如下: Untitled Document #apDiv1 { position:absolute; left:300px; top:100px; width:100px; height:100px; z-index:1; background-color: #FF00FF


慢慢来,这次实现了向任意方向扩展!
代码如下:




Untitled Document









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}//透明度 起始,结束,步长
);

文档

JS动画效果代码3_javascript技巧

JS动画效果代码3_javascript技巧:慢慢来,这次实现了向任意方向扩展! 代码如下: Untitled Document #apDiv1 { position:absolute; left:300px; top:100px; width:100px; height:100px; z-index:1; background-color: #FF00FF
推荐度:
标签: 动画 js 代码
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top