标题 | js实现类似jquery里animate动画效果的方法 |
内容 | 该实例可实现鼠标移上,先宽度变化,再高度变化,最后透明度变化,鼠标移出,再依次变回去的效果。 要点一: startrun(obj,attr,target,fn) box.onmouseover = function(){ startrun(box,width,200,function(){ startrun(box,height,200,function(){ startrun(box,opacity,100) }); }); } 如上面,函数也可以做为参数使用,就可以达到先执行某个动作,再执行某个动作的效果了。 要点二: if(cur == target){ clearinterval(obj.timer); if(fn){ fn(); } } 当运动到达目标点,关闭定时器,然后就可以执行新的函数了。 最后,上代码: <!doctype html> <html> <head> <meta charset=gb2312 /> <title>无标题文档</title> <style> <!-- body{margin:0; padding:0; font:12px/1.5 arial;} #box{width:100px; height:100px; position:absolute; background:#06c; left:0;filter:alpha(opacity=30); opacity:0.3;} --> </style> <script> <!-- function getstyle(obj,name){ if(obj.currentstyle){ return obj.currentstyle[name]; }else{ return getcomputedstyle(obj,false)[name]; } } window.onload = function(){ var box = document.getelementbyid(box); box.onmouseover = function(){ startrun(box,width,200,function(){ startrun(box,height,200,function(){ startrun(box,opacity,100) }); }); } box.onmouseout = function(){ startrun(box,height,100,function(){ startrun(box,width,100,function(){ startrun(box,opacity,30); }); }); } } function startrun(obj,attr,target,fn){ clearinterval(obj.timer); obj.timer = setinterval(function(){ var cur = 0; if(attr == opacity){ cur = math.round(parsefloat(getstyle(obj,attr))*100); }else{ cur = parseint(getstyle(obj,attr)); } var speed = (target-cur)/8; speed = speed>0?math.ceil(speed):math.floor(speed); if(cur == target){ clearinterval(obj.timer); if(fn){ fn(); } }else{ if(attr == opacity){ obj.style.filter = alpha(opacity=+(cur+speed)+); obj.style.opacity = (cur+speed)/100; }else{ obj.style[attr] = cur + speed + px; } } },30) } //--> </script> </head> <body> <div id=box> </div> </body> </html> |
随便看 |
|
在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。