AL_Cherish
2015-12-17 15:55
firefox偶尔ialpha=0.9999999999999999这种
chrome中 opacity=09/1/1.1;opacity=02/0.3/0.4一直在变化
(fedora)
估计是吃了炫迈了吧。。
经过我的检查,你的程序至少有3处错误和1处不恰当的地方。
试试下面的代码,就是你想要的效果
<!DOCTYPE html> <html> <head> <style type="text/css"> body,div{ margin:0; padding:0; } div{ width:200px; height:200px; margin:10px; float:left; background:red; opacity:0.3; } </style> <script> window.onload=function(){ var oDiv=document.getElementsByTagName("div"); for(var i=0;i<oDiv.length;i++){ oDiv[i].ialpha=0.3; oDiv[i].onmouseover=function(){ startMove(this,1); } oDiv[i].onmouseout=function(){ startMove(this,0.3); } } } //var timer=null; //var ialpha=0.3; function startMove(obj,iTarget){ //var oDiv=document.getElementById("div1"); clearInterval(obj.timer); var speed=0; // 第一处错误:timer 前面没有写 obj. obj.timer=setInterval(function(){ // 第二处错误:把速度写在了函数内部 // var speed=0; if(obj.ialpha>iTarget){ speed=-0.1; }else if(obj.ialpha<iTarget){ speed=0.1; } // 第三处错误:运动停止条件判断不正确。 if(Math.abs(obj.ialpha - iTarget) <= 0.1){ clearInterval(obj.timer); }else{ obj.ialpha+=speed; obj.style.opacity=obj.ialpha; } // 不恰当之处:间隔时间写的太长了,我改成了30。。运动相关的函数间隔写30ms比较好。。 },30) } </script> </head> <body> <div id="div1"></div> <div id="div2"></div> <div id="div3"></div> <div id="div4"></div> </body> </html>
我用浏览器调试发现报了3处错 您可以看看是不是语法 或者格式错了
JS动画效果
113923 学习 · 1443 问题
相似问题