Kampfer的记事本

新blog:www.kampfer-lw.com

导航

文本滚动效果(操作节点)

Posted on 2010-07-25 17:07  Kamfper  阅读(166)  评论(0编辑  收藏  举报

先看看效果把:Demo
接下来是思路的分析:
首先是主函数的思路:
1.提取列表的第一个li,并copy它。
2.检查li的margin-top是否为-20px。
  如果为true,就从ul里删除第一个li,再将它的副本添加到ul的最后。并且将li的margin-top重置为0;
  如果为false,就减小margin-top,比如-2等。利用setTimeout调用主函数直到步骤2判定为true;
然后是:
3.通过定义window的onload事件处理函数,利用setInterval不断重复调用主函数。
注意1在火狐浏览器中列表的childNodes与children不一样,以本例说明,如图:

 





childNodes有9个之多,而且前面5个还都是文本“\n”。而在本例中我们是要操作节点的,即childNodes,明显不能直接提取ul的第一个节点,所以我们这里自定义了一个getFirstChild函数进行筛选。

注意2本例中多次使用了闭包的技巧,这是十分有效且必要的。保证了传递给函数的参数的正确。代码如下:

window.setInterval(function(){scrollit(parentNode,20,0)},3000);
setTimeout(function(){scrollit(obj,top,i);},20);

关于闭包,我将在以后的日志中进行更加详细的总结,这里只是强调一下它的作用。