簡體   English   中英

一個接一個地淡入div

[英]Fade in divs one after another

嘿那些人,我很擅長HTML和CSS,但只有jsut開始划傷jQuery的表面。 我希望在頁面加載上逐個淡入3個div。 到目前為止,我有這個

<script type="text/javascript">
    $('#1').hide().fadeIn(1500);
    $('#2').hide().fadeIn(1500);
    $('#3').hide().fadeIn(1500);
</script>

我聽說使用css將顯示設置為none對任何擁有非JavaScript瀏覽器的人來說都是一場噩夢,所以我使用hide函數來初始隱藏div。

但這只會一下子消失。 有任何想法嗎?

你可以.delay()每個,以便在正確的時間淡入之前,例如:

$("#1, #2, #3").hide().each(function(i) {
  $(this).delay(i*1500).fadeIn(1500);
});

這會使它們按照它們在頁面中出現的順序逐漸消失,這通常是你所追求的,第一個是延遲0所以它是瞬間,第二個是延遲1500ms(所以當第一個完成時等)。 .each()回調中, i是索引,從0開始,因此您可以使用它來快速計算正確的延遲。

這里的另一個優點是這種方法更容易維護,例如給他們一個類,你可以這樣做:

$(".fadeMe").hide().each(function(i) {
  $(this).delay(i*1500).fadeIn(1500);
});

然后,您需要在JavaScript端進行零維護以添加其他<div>元素以淡入淡出。

淡入命令包含回調函數,請參閱文檔 這意味着您可以鏈接事件。

<script type="text/javascript">
    $('#1, #2, #3').hide();

   $('#1').fadeIn(1500, function(){ $('#2').fadeIn(1500, function(){$('#2').fadeIn(1500)})});
</script>
<script type="text/javascript">
    $('#1').hide().fadeIn(1500, function(){
        $('#2').hide().fadeIn(1500, function(){
             $('#3').hide().fadeIn(1500);
        });
    });
</script>

以下是實現此效果的更簡潔,更通用的方法:在http://jsfiddle.net/BztLx/20/上查看

邏輯技巧依賴於fadeIn的回調功能,並使用.eq()作為所選元素的迭代器。

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function() {
function sequentialFadeIn(selectorText, speed, display, callBack) {

    display = typeof display !== 'undefined' ? display : "block";

    var els = $(selectorText), i = 0;

    (function helper() {
        els.eq(i++).fadeIn(speed, helper).css("display", display);
        if (callback && i === els.length) callback();
    })();
}

sequentialFadeIn(".toBeFaddedIn", "slow", "inline-block", function() {
    console.log("I am just an optional callback");
});​
});
</script>

</head>
<body><style media="screen" type="text/css">
.hello {
    background-color: blue;
    height:50px;
    width: 50px;
    display: none;

}
</style>

<div class="hello toBeFaddedIn"></div>
<div class="hello toBeFaddedIn"></div>
<div class="hello toBeFaddedIn"></div>
<div class="hello toBeFaddedIn"></div>
<div class="hello toBeFaddedIn"></div>

</body></html>

使用延遲功能如下:

<script type="text/javascript">
    $('#1').hide().fadeIn(1500);
    $('#2').hide().delay(1500).fadeIn(1500);
    $('#3').hide().delay(3000).fadeIn(1500);
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM