<!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <style type="text/css"> div { width: 200px; height: auto; overflow: hidden; margin: 0 auto; line-height: 24px; font-size: 12px; margin-top: 100px; border: 1px solid #3366cc; } div ul { overflow: hidden; zoom: 1; } </style> </head> <body> <div> <ul><li>今天我们要去浑南游玩</li></ul> </div> <script type="text/javascript"> (function () { var div = document.getElementsByTagName('div')[0]; var ul = div.getElementsByTagName('ul')[0]; ul.style.margin = 0 + 'px'; div.style.height = ul.offsetHeight + 'px'; var li_h = ul.getElementsByTagName('li')[0].offsetHeight; ul.innerHTML += ul.innerHTML; ul.outerTime = setInterval(function () { var ypos = parseInt(ul.style.marginTop); var final_y = ypos - li_h; if (final_y <= -ul.offsetHeight / 2) { ul.style.marginTop = 0 + 'px'; final_y = -li_h; } move(ul, final_y); }, 3000) })(); function move(obj, final_y) { var ypos = parseInt(obj.style.marginTop); if (ypos > final_y) { var dist = 0; dist = Math.ceil(-(final_y - ypos) / 10); ypos = ypos - dist; obj.style.marginTop = ypos + 'px'; //obj.innerTime = setTimeout(move(obj, final_y), 50); //自己move调用自己不可以 //obj.innerTime = setTimeout(arguments.callee(obj, final_y)); //利用js内置的callee调用自己也不行 obj.innerTime = setTimeout(function () { move(obj, final_y) }, 50);//匿名函数调用就可以 前面2个为什么不可以? } else { clearTimeout(obj.innerTime); } } </script> </body> </html>
看代码 函数move 下面红色的注释(有3个,前面2个效果没实现)不知道为什么?但是我调式打断点了js 我发现那个div里面ul 确实移动了 只是直接肉眼无法看到 而第3个就可以。不明白为什么?
我 调式这段代码发现移动这个div里面的ui的文字的思路就是改变css 本人css不怎么好 也希望解释下 操作css改变动画 的原理 怎么动起来的 谢谢!