【问题标题】:Apply different background color using jquery使用 jquery 应用不同的背景颜色
【发布时间】:2010-10-11 09:55:55
【问题描述】:

我在父 div 中有一组子 div,子 div 是动态生成的,并且都具有相同的类名。

我的问题是如何使用 jquery 为每个子 div 应用不同的背景颜色 下面的示例代码

<div id="someid">
   <div class="bar">...</div>
   <div class="bar">...</div>
   <div class="bar">...</div>
   <div class="bar">...</div>
   <div class="bar">...</div>
</div>

这里我想为每个子 div 应用不同的背景颜色(class="bars")

提前致谢。

【问题讨论】:

  • 颜色是完全随机的吗?

标签: jquery css


【解决方案1】:

类似这样的:

var colors = ["f00", "0f0", "00f", "ff0", "0ff", "f0f"];

$('#someid .bar').each(function(i) {
   $(this).css('background-color', '#'+colors[i % colors.length]);
});

要产生随机颜色,你可以使用这个:

function randomColor() {
    return 'rgb('+
        Math.round(Math.random()*255)+', '+
        Math.round(Math.random()*255)+', '+
        Math.round(Math.random()*255)+')'
}

$('#someid .bar').each(function(i) {
   $(this).css('background-color', randomColor());
});

演示:

http://jsbin.com/eqoyi4

【讨论】:

  • 我也推荐一个已知的调色板,这是我使用的一个:var colors = ["#5179D6", "#66CC66", "#EF2F41", "#FFC700", "#61BDF2", "#FF7900", "#7588DD", "#2F5E8C", "#07BACE", "#BAE55C", "#BA1871", "#FFFFCC", "#BDE6FC", "#C7C7C7", "#ADA8FF", "#2FA675"];,在此处可见:jsfiddle.net/nick_craver/SzRee
【解决方案2】:

我猜问题已经回答了,但无论如何;如果您想显示特定颜色的阴影(本例中为#ffcc33):

$(document).ready(function() {
    $('.bar').each(function(i) {
        var j = $('.bar').length;
        $(this).css('background-color', 'rgb(' + 
            Math.floor(0xff / j * (i + 1)) + ', ' + 
            Math.floor(0xcc / j * (i + 1)) + ', ' + 
            Math.floor(0x33 / j * (i + 1)) +
        ')');
    });
})

http://www.jsfiddle.net/BEcvG/

【讨论】:

    【解决方案3】:
    $('DIV.bar').each(function(i,e){
     $(this).css('backgroundColor','rgb('+Math.round(255/i)+','+Math.round(255/i)+','+Math.round(255/i)+')');
    });
    

    【讨论】:

    • @Gaby:math 应该是 Math。这会执行所有具有类 bar 的 div,无论它们在哪里,并声明它从不使用的参数。然后是被零除的错误。但除了那个...
    • 如果i 为零会怎样?划分溢出?
    • @Salman: “如果i 为零会发生什么?除法溢出?” 不,对于这种情况,JavaScript 有一个特殊的Infinity 值。不过,在rgb 通话中仍然没有用。 :-)
    • 我已经修复了“文字错误”。stackoverflow 是一个代码形式的社区还是应该显示一个解决方案? 255 / 0 = 0,Math.round(0) = 0 -> rgb(0,0,0) !
    • 我认为每个人都应该有足够的脑力去适应一个可能的解决方案来达到他的目的,而不是盲目地复制
    猜你喜欢
    • 2014-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2013-04-16
    相关资源
    最近更新 更多