首先,我们先写一个div,设置一些简单的样式,我们就拿这个div举例子,如下代码:
#div{ width: 100px; height: 100px; background: gold; position: absolute; left:0; top:0; opacity: 1; }
然后我们就开始写js代码了,如下:
window.οnlοad=function() {
var oDiv = document.getElementById("div"); var timer;
写一个函数,方便以后用的时候直接调用就好了,首先先传入几个参(要运动的对象,变动的属性,终点距离,运动总时间,回调函数)----今天的只是简单的封装一下,你也写可以传入一个json function move(obj,name, target, dur,fn) {// 总步数=总时间÷计时器设定的时间 var count = parseInt(dur / 30);// 起始位置 var start = parseFloat(setStyle(obj,name));// 总距离=传入的距离-起始距离 var dis = target - start;// 每步运动的距离=总距离÷总步数 var spen = dis / count;// 定义起始步数 var n = 0; timer = setInterval(function () { n++;// 把当前运动的位置保存 var cur=start + n * spen;// 判断属性是不是透明度,透明度不用加单位 if(name=='opacity'){ obj.style[name]=cur;// 兼容IE低版本,IE的透明度是1到100 obj.style.filter='alpha('+cur*100+')'; }else { obj.style[name] = start + n * spen + "px"; }// 判断运动是否完成 if (n == count) {// 完成后清除定时器,停止运动 clearInterval(timer);// 判断用户是否传入回调函数 fn && fn(); }; }, 30); };
然后自己随便写一些调用回调函数,测试一下: oDiv.οnclick=function(){ move(oDiv,"left",600,1000,function(){ move(oDiv,'top',400,1000,function(){ move(oDiv,"width",300,1000,function(){ move(oDiv,"opacity",0,1000); }); }); }); };// 获取非行间样式 function setStyle(obj,name){// 考虑兼容性问题 if(obj.currentStyle){//不兼容火狐和谷歌 return obj.currentStyle[name]; }else{ return getComputedStyle(obj,false)[name];//不兼容IE }; }; };