2012-08-02 48 views
0

编辑:使客观清晰,最终股票应该褪色干净当文档准备好和第一个动画已经开始,有一个小的更新代码和演示在这里http://jsfiddle.net/pushplaybang/aFSJk/虽然开始仍然是有点波涛汹涌的改善jQuery新闻速递 - 平滑开始

我目前正在建立一个推荐人的推荐,它工作得相当好,除了我试图使用setTimout褪色的股票一旦加载页面,而使用setTimout在页面加载时停止显示第一个项目,而不是按照我的意图轻轻地淡入淡出,而是突然跳入到位。

有人能纠正我这样做的方式吗?有没有更好的方式让它淡入?

请注意,下面的内容将被包装在文档就绪函数中,并且在随附的CSS中,容器最初设置为显示:无。

function bangingTicker(container,element) { 

    var tickContainer = $(container); 

    setTimeout(function(){ 
    tickContainer.fadeIn(1000); 
    },6200); 

     function tick(){ 
      var tickElem = tickContainer.children(element); 
      tickElem.eq(1).siblings().animate({ 
       opacity: 0 
       },400, function() { 
        tickContainer.stop(true,true).delay(10).animate({ 
        'margin-top': 120 
        },0,function() { 
         tickContainer.delay(100).animate({ 
         'margin-top': 20 
         },8000); 
        }); 
         tickElem.first().appendTo(tickContainer); 
         tickElem.eq(1).delay(200).animate({ 
          opacity: 1 
         },400); 
        }); 

     } 

     setInterval(function(){ tick() }, 6000); 

} 

bangingTicker('#testi_ticker','li'); 

回答

0

今天工作了一段时间后,我已经按照我想要的方式工作,尽管我仍然觉得代码可以改进 - 我希望尽可能少依赖css/html,但是它的工作原理也很棒。

看看这个js小提琴。 http://jsfiddle.net/pushplaybang/aFSJk/3/

的总结是:

  • 降setTimout一起

  • 运行蜱函数一次simultaeously来设置setInterval函数

  • 这将停止动画之前的延迟开始。

  • 包住整个蜱功能在回调到淡入

  • 设置不透明度为0的CSS的子元素,使他们只能通过蜱功能褪
+0

这很好:)工作很好 – 2012-08-02 14:03:47

+0

请注意,虽然上述工作相当顺利,但jsfiddle中的JSLInt返回错误错误: 第37行的问题字符31:缺少分号。 setInterval(function(){tick()},4000); 隐含的全球性:$ 1,11 – pushplaybang 2012-08-02 14:06:40

+0

在tick()函数后面放上一个分号,一切都会好起来的。 – 2012-08-02 14:14:56

0

试试看jsfiddle。这是你需要的吗?

+0

不大,我编辑问题可能会使目标更加清晰,而这似乎有fadeIn的工作,我希望在第一个setInterval函数运行之后发生淡入,使得动画在运行的同时淡入,而不是目前UL出现在那里,然后敲打报时功能开始运行。 – pushplaybang 2012-08-02 12:27:02

+0

我更新了jsfiddle链接。我做了一些改变,所以也许这就是你想要的:) – 2012-08-02 12:36:42

+0

嘿我刚刚做了一个更新我自己以及[链接] http://jsfiddle.net/pushplaybang/aFSJk/它稍好,但我认为这个问题进来setInterval - 这个链接是比你的稍微顺利 – pushplaybang 2012-08-02 12:37:33