javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
平时工作中写网页涉及的运动往往都非常简单,比如改变宽高,透明度,位置,是最常用的几种形式,为了省事,整合了下,于是就有了下面这个东东:
兼容:IE系列、chrome、firefox、opera、Safari、360
/*
javascript简易运动
Move.action(dom对象,json格式属性值对,缓动参考值,回调方法)
示例:
varbox=document.getElementById('Ele');
Move.action(box,{width:500,height:200,left:200,top:100,marginLeft:10,opacity:.5},5,function(){
console.log('end');
});
*/
varMove={
version:'1.5',
//判断是否空对象
isEmptyObject:function(obj){
for(varattrinobj){
returnfalse;
}
returntrue;
},
//取CSS样式值
getStyle:function(obj,attr){
if(obj.currentStyle){//IE
returnobj.currentStyle[attr];
}else{
returngetComputedStyle(obj,null)[attr];
}
},
//运动
action:function(obj,json,sv,callback){
_this=this;
//obj是否为空
if(_this.isEmptyObject(obj)){
returnfalse;
}
//运动开始
clearInterval(obj.timer);
obj.timer=setInterval(function(){
varisAllCompleted=true,//假设全部运动都完成了
speed,//速度
attrValue,//当前值
targetV;//目标值
for(attrinjson){
attrValue=_this.getStyle(obj,attr);
switch(attr){
case'opacity':
attrValue=Math.round((isNaN(parseFloat(attrValue))?1:parseFloat(attrValue))*100);
speed=(json[attr]*100-attrValue)/(sv||4);
targetV=json[attr]*100;
break;
default:
attrValue=isNaN(parseInt(attrValue))?0:parseInt(attrValue);
speed=(json[attr]-attrValue)/(sv||4);
targetV=json[attr];
}
speed=speed>0?Math.ceil(speed):Math.floor(speed);
//如果循环过程中存在尚未结束的运动,isAllCompleted为假
if(attrValue!=targetV){
isAllCompleted=false;
}
switch(attr){
case'opacity':
{
obj.style.filter="alpha(opacity="+(attrValue+speed)+")";
obj.style.opacity=(attrValue+speed)/100;
};
break;
default:
obj.style[attr]=attrValue+speed+'px';
}
}
//所有循环结束后,只有当全部运动结束后(isAllCompleted=true)时才关闭定时器
if(isAllCompleted){
clearInterval(obj.timer);
if(typeofcallback==='function'){
callback();
}
}
},30);
}
};
以上就是描述了javascript实现网页中涉及的简易运动的方法,希望对大家实现javascript简易运动有所启发。