2012-04-03 124 views
0

嗨我試圖讓這個腳本顯示隨機顏色一個接一個地滾動起來,但到目前爲止我已經這樣做,但它不光滑,它重新啓動時發生變化,所以你不順利效果,它會改變顏色兩次任何幫助將非常感謝。jquery隨機顏色

$("#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/ 謝謝!

+0

問題是在初始加載後,您不希望「頂部」顏色每次都改變顏色,只有底部隨着它向上旋轉? – ramblinjan 2012-04-03 23:06:46

+0

不,到目前爲止有3個div,但我想要的是當它們被隱藏時它們會改變顏色,而不會像現在它們在頂端時那樣改變顏色,因爲它們在滾動之前會閃爍另一種顏色。 – 2012-04-05 11:57:11

回答

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的顏色時,您需要使用$(li:last div)來選擇它,因爲三個div在整個列表中循環。當您特別選擇div1,div2或div3時,它可能位於列表中的任何位置
  • 顏色變化(至少在$(li:last div)選擇器中)需要在after()語句之前發生。您的原始代碼更改div的順序,然後更改顏色
+0

謝謝!作品完美,你解釋它的方式是現貨。 – 2012-04-07 17:42:41

+0

沒問題!你能點擊答案左邊的檢查來接受它嗎? – ramblinjan 2012-04-08 00:08:31

+0

剛剛完成它..我沒有嘗試向上的箭頭,但表示要求15點聲望。謝謝 – 2012-04-09 09:35:20