-
关于链式运动的BUG:var flag=true;定义在了for-in外面,而因为json中的属性无法同一时间运动到目标值,所以flag的值在前面的过程一定会变为false。变为false之后,当所有的属性值都运动到目标值也没有语句使它变为true,所以fn()不会执行,就无法关闭定时器和执行下一个函数了。查看全部
-
script文件: <script><br> window.onload=function(){<br> var oDiv = document.getElementById('div1');<br> oDiv.onmouseover=function(){<br> startMove(0);<br> }<br> oDiv.onmouseout=function(){<br> startMove(-200);<br> }<br> }<br> var timer=null;<br> function startMove(iTarget){<br> clearInterval(timer);<br> var oDiv = document.getElementById('div1');<br> timer=setInterval(function(){<br> var speed=0;<br> if(oDiv.offsetLeft>iTarget){<br> speed=-10;<br> }else{<br> speed=10;<br> }<br> <br> if(oDiv.offsetLeft==iTarget){<br> clearInterval(timer);<br> }else{<br> oDiv.style.left=oDiv.offsetLeft+speed+'px';<br> }<br> },30);<br> }<br> <br> </script>查看全部
-
运动框架实现思路 1.速度(改变值left、right、width、height、opacity) 2.缓冲运动 3.多物体运动 4.任意值变化 5.链式运动 6.同时运动查看全部
-
<body> <div id="div1"> <span id="share">分享</span> </div> <script> window.onload = function() { var oDiv1 = document.getElementById("div1"); oDiv1.onmouseover = function(){ startMove(0); } oDiv1.onmouseout = function() { startMove(-200); } } var timer=null; function startMove(iTarget) { clearInterval(timer); var oDiv1 = document.getElementById('div1'); timer=setInterval(function(){ var speed = 0; if(oDiv1.offsetLeft>iTarget){ speed = -1; }else{ speed = 1; } if(oDiv1.offsetLeft==iTarget){ clearInterval(timer); }else{ oDiv1.style.left=oDiv1.offsetLeft+speed+"px"; } },30); } </script> </body>查看全部
-
04:37查看全部
-
aLi[i].timer就是针对当前这个DOM节点创建了一个自定义的属性,后边也就能自己防问自己的也不会起冲突了~查看全部
-
经验之谈:“多物体运动,所有的东西都不能共用。”查看全部
-
获取对象样式:IE浏览器 obj.currentStyle[attr]<br> firefox: getComputedStyle(obj,boolean)[attr];查看全部
-
原因:因为有除法,当offsetLeft值变的越来越小时,最后相除会使speed变成小数,从而offsetLeft与speed相加会有小数,又因显示器的最小像素单位是1px,所以浏览器默认向下取整(变小,即floor),将小数省略,小数省略后,最终的值会变小,从而导致程序无法进入if判断,进入死循环。 这一点可以用console.log(speed)可以验证,speed的log会一直输出,因为程序死循环了。 所以,需要ceil or floor来解决这个问题,让程序进入if的判断,终止循环。查看全部
-
运动框架实现思路 1.速度(改变left,right,width,height,opacity) 2.缓冲运动 3.多物体运动 4.任意值运动 5.链条运动 6.同时运动查看全部
-
得到对象属性值的方法查看全部
-
链式动作,如果是单个物体传入this没有错误,如果是多个物体,则需要将this保存在一个变量_this中,然后使用这个变量来传递。查看全部
-
获取样式: function getStyle(obj.attribute){ if(obj.currentStyle){ return obj.currentStyle(attribute); //针对IE浏览器 }else{ return getComputedStyle(obj,false)[attribute]; //针对非IE浏览器 } }查看全部
-
多物体。。。不要使用共用属性。。可以使用 element.属性。。自定义属性为每一个Obj定义专属的属性查看全部
-
运动框架实现思路查看全部
举报
0/150
提交
取消