2011-08-14 33 views
3

我想使用jQuery淡入頁面加載時導航div內的鏈接。目前他們的風格是使用a並擁有個人身份證件。使用jquery淡入淡出顯示加載頁面上的鏈接選擇

#navtop a {etc.} 

請問我要改變成一個類,再添一個隱藏的鏈接,並重新應用在上課的時候淡入開始或有更簡單的方法是什麼?

另外我想鏈接淡入一個接一個。

HTML:

<div id="navtop"> 
    <a id="link1" href="link.php"><img src="img/logotrans.gif" width="30" height="30" /></a> 
    <a id="link2" href="link.php">News</a> 
    <a id="link3" href="link.php">Blog</a> 
    <a id="link4" href="link.php">Tour</a> 
    <a id="link5" href="link.php">Photos</a> 
    <a id="link6" href="link.php">About</a> 
    <a id="link7" href="link.php">Contact</a> 
</div> 

這是據我已經使用JavaScript了:

$(window).load(function() { 
    $('#link1').fadeIn(5000, function() { 
     // Animation complete 
    }); 
}); 
+1

能否請您提供一個您當前擁有的HTML和任何適用JavaScript的例子? – ghayes

+0

@ghayes添加了html和java –

+0

@frank .... Java和Javascript是一樣的...對不對? ;) –

回答

3

您可以使用jQuery queue排隊淡入。像這樣:

See it live at jsFiddle.

//--- Queue-up the fade-in's 
var animationQ = $({}); 

$("#navtop a").each (function() { 
    var jThis = $(this); 

    animationQ.queue ('FadeIns', function (nextQ_Item) { 

     jThis.fadeIn (5000, function() { 
      nextQ_Item(); 
     }); 
    }); 
}); 

//--- Start the fade-ins. 
animationQ.dequeue ('FadeIns'); 


這種方法,你可以排隊節點的任何集合,只是通過改變選擇的優勢。他們不必是兄弟姐妹。


更新:
錯開淡入開始部分方式,用途:

var fadeTime = 5000; //-- How long will an individual fade last? (mS) 
var fadeStagger = 500; /*-- How far into i=one element's fade will 
          the next elements fade start? (mS) 
         */ 

//--- Queue-up the fade-in's 
var animationQ = $({}); 

$("#navtop a").each (function (J) { 
    var jThis = $(this); 

    animationQ.queue ('FadeIns', function (nextQ_Item) { 
     jThis.fadeTo (fadeStagger, fadeStagger/fadeTime , function() { 
      nextQ_Item(); 
      jThis.fadeTo (fadeTime - fadeStagger, 1); 
     }); 
    }); 
}); 

//--- Start the fade-ins. 
animationQ.dequeue ('FadeIns'); 


See it at jsFiddle.


要求的解釋:

  1. 我們通過jQuery在一個空對象($({}))上設置了一個通用隊列容器。這似乎比將隊列附加到某個節點更清潔。

  2. 我們選擇我們的節點與任何有效的jQuery選擇器,然後使用the each() functionDoc來遍歷它們。

  3. 對於每個節點,我們使用the queue() functionDoc將一個條目添加到我們的自定義隊列中。

    1. 我們給這個隊列一個唯一的名字「FadeIns」來避免衝突。
    2. 當調用它時,每個隊列條目都會傳遞一個指向下一個隊列條目的指針。我們用nextQ_Item變量捕獲它。
    3. 隊列項目函數有2個作業:(1)項目淡入淡出,(2)完成後調用下一個隊列項目。
    4. 但是,我們已將fadeDoc分爲兩部分以完成所需的交錯啓動。
      1. 第一次淡入僅延遲fadeStagger延遲時間。我們通過延遲時間與整體時間的比率來計算結束不透明度。
      2. 現在我們觸發下一個元素。
      3. 接下來,我們恢復並完成淡入淡出,記住它只剩下(總 - 交錯延遲)毫秒。
  4. 一旦我們的定製隊列建成後,我們與the dequeue() functionDoc火它關閉。
+0

謝謝,在前一個節點完成之前是否有可能使下一個節點開始衰落,例如500毫秒進入動畫 –

+0

查看最新的答案。 –

+0

歡呼的芽,偉大的作品 –

0

這將讓他們在同一時間的所有淡入。

$('#navtop a').fadeIn('slow', function() { 
    // Animation complete 
}); 

您將需要建立某種形式的setTimeout和環比他們

+0

謝謝,超時的東西的任何鏈接? –

1

無需更改任何標記。使用下面的代碼可以輕鬆實現您想要的內容。活生生的例子:http://jsfiddle.net/tw16/pJ5uC/

$(window).load(function() { 
    fadeA($('#navtop a:first-child')); 
}); 

function fadeA(elem) { 
    elem.fadeIn(500, function() { 
     fadeA($(this).next()); 
    }); 
} 

我用500,而不是5000,以加快觀看過程。

+0

謝謝,在現場示例中,navtop css顯示無。如果我想保持當前樣式,我將不得不將其更改爲類?鏈接到該網站:[鏈接](http://www.francisastindesigns.com/techielunchbox) –

+0

@frank:無需改變任何東西到一個類,只需添加'display:none'到當前'#navtop a' css規則。如果他們沒有隱藏起來,你就不能'淡入'這些鏈接。 – tw16

+0

謝謝你,先生,工作過一種享受。 –