0

こんにちは、このスクリプトを取得して、li が上にスクロールするときにランダムな色を次々と表示しようとしていますが、これまでのところこれを実行していますが、再起動すると滑らかに変化しないため、滑らかな効果が得られず、色が 2 回変化しますどんな助けにも感謝します。

 $("#carousel ul").animate({marginTop:-100},2000,function(){

    function pad(s,i,c,r){
    i=i+1-s.length;
    if(i<1)return s;
    c=new Array(i).join(c||" ");
    return r?s+c:c+s;
    };

    hue  = "#"+pad((Math.random()*0x1000000<<0).toString(16),6,"0");
    hue2 = "#"+pad((Math.random()*0x1000000<<0).toString(16),6,"0");
    hue3 = "#"+pad((Math.random()*0x1000000<<0).toString(16),6,"0");

    $(this).find("li:last").after($(this).find("li:first"));
    $('#div1').css({backgroundColor: hue});
    $('#div2').css({backgroundColor: hue2}); 
    $('#div3').css({backgroundColor: hue3});

    $(this).css({marginTop:0});
    })  
    },1000);  
});

私の例はここにありますhttp://swipedstudio.com/jtoy/ よろしくお願いします!

4

1 に答える 1

0

作業コード:

var t = setInterval(function(){ 

 $("#carousel ul").animate({marginTop:-100},2000,function(){

    function pad(s,i,c,r){
    i=i+1-s.length;
    if(i<1)return s;
    c=new Array(i).join(c||" ");
    return r?s+c:c+s;
    };

    hue  = "#"+pad((Math.random()*0x1000000<<0).toString(16),6,"0");

    $(this).find("li:last div").css({backgroundColor: hue});
    $(this).find("li:last").after($(this).find("li:first"));

    $(this).css({marginTop:0});
    })  
    },1000); 

問題:

  • 本当にリストの最後のものだけを変更したいのに、すべての間隔ですべてのdivの色を変更していました
  • 最後の div の色を変更する場合は、 を使用して選択する必要があります。これ$(li:last div)は、3 つの div がリストを循環するためです。特に div1、div2、または div3 を選択すると、リスト内の任意の場所にある可能性があります
  • 色の変更 (少なくともセレクターを使用) は、ステートメント$(li:last div)の前に行う必要がありました。after()元のコードは div の順序を変更してから色を変更します
于 2012-04-05T19:32:08.987 に答える