TAMJING
2015-07-29 11:40
help~
注意看line38
icur = Math.round(parseFloat(getStyle(obj.attr))*100);
obj.attr
目测是你这个参数搞错了。应该是传递的两个参数
所以应该是
icur = Math.round(parseFloat(getStyle(obj, attr))*100);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>自主封装多功能动画框架</title> <style> ul li{ width: 300px;; height: 200px; background: pink; opacity: 0.3; } </style> <script> window.onload = function(){ // test var Li1 = document.getElementById('li1'); Li1.onmousemove = function(){ DIY_Animation(this,'opacity',100); } Li1.onmouseout = function(){ DIY_Animation(this,'opacity',30); } } //获取对象obj的attr属性 function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr];}// 有错! else{ return getComputedStyle(obj,false)[attr];} } //可以改变宽高、背景属性、字号属性、边框属性等等 //透明度(opacity)特殊处理,0~100为标准 // var alpha=30; function DIY_Animation(obj,attr,iTarget){ //obj=对象;attr=属性;iTarget=改变的数值 clearInterval(obj.timer); obj.timer = setInterval(function(){ var icur = 0; if(attr == 'opacity'){ icur = Math.round(parseFloat(getStyle(obj.attr))*100); }else{ icur = parseInt(getStyle(obj,attr));} //获取对象obj的attr属性,parseInt()取整 var speed = (iTarget-icur)/8; speed = speed>0?Math.ceil(speed):Math.floor(speed); if(icur == iTarget){ clearInterval(obj.timer);} else { if (attr == 'opacity') { obj.style.filter = 'alpha(opacity:' + (icur + speed) + ')'; obj.style.opacity = (icur + speed) / 100; } else { obj.style[attr] = icur + speed + 'px';} } },30); } </script> </head> <body> <ul> <li id="li1"></li> </ul> </body> </html>
请帖完整代码
JS动画效果
113925 学习 · 1443 问题
相似问题