2012-08-02 27 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