0

嗨,我试图让这个脚本在 li 向上滚动时一个接一个地显示随机颜色,但到目前为止我已经这样做了,但它并不平滑,它在重新启动时会发生变化,所以你不会得到平滑的效果,它会改变颜色两次任何帮助将非常感谢。

 $("#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)因为三个 div 在列表中循环。当您专门选择 div1、div2 或 div3 时,它可能位于列表中的任何位置
  • $(li:last div)需要在after()语句之前进行颜色更改(至少使用选择器)。您的原始代码更改了 div 的顺序,然后更改了颜色
于 2012-04-05T19:32:08.987 回答