用于彩色动画的jQuery Math - 特定颜色范围

时间:2010-10-02 13:12:53

标签: jquery math animation colors

我在悬停时使用此数学作为bg颜色动画:

var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';

它产生随机的rgb颜色。非常好,但我寻找不同的东西。

有没有人知道一个好的数学,我可以使用这种随机颜色只在某个颜色范围之外,比如红色范围之外或绿色之外?

感谢任何帮助。

@Avinash,这是我现在使用它的完整代码。我如何包含您的解决方案?

$(document).ready(function () {
    //bg color animation
    original = $('.item,.main-menu-button').css('background-color');
    $('.item,.main-menu-button').hover(function () { //mouseover
        var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')'; //random hover color
        $(this).stop().animate({
            'backgroundColor': col
        }, 1000);
    }, function () { //mouseout
        $(this).stop().animate({
            'backgroundColor': '#111'
        }, 500); //original color as in css
    });
});



它不起作用。我最好把它留下来。感谢大家的帮助。

3 个答案:

答案 0 :(得分:6)

要生成范围内的随机数,我们需要做一些像

这样的事情
minValue + random Number * (maxValue - minValue)

即,如果你想在 100 200 的范围之间创建一个随机数,我们应该这样做

var rand = 100 + Math.floor(Math.random() * (200 - 100));

给出100到200范围内的随机数

使用这个基本规则,我们可以从给定范围生成随机颜色

var range = [{0 : 150,1 : 200}, {0 : 200,1 : 230},{0 : 10,1 : 20}];
function rgb() {
  var color  ='rgb(';
  for(var i = 0; i< 3; i++) {
    color += rand(range[i]['0'], range[i]['1']) + ',';
  }
  return color.replace(/\,$/,')')
}

function rand(min, max) {
    return min + Math.floor(Math.random() * (max - min));
}

alert(rgb());

试试此代码 http://jsbin.com/tuday

编辑

$(function() {
    var cache = $('#hover').css('background-color');
    $('#hover').hover(function() {
        $(this).css({'background-color' : rgb() });
    },function() {
        $(this).css({'background-color' : cache });
    });
});

示例 http://jsbin.com/iwovew

答案 1 :(得分:3)

从黑到红范围中生成随机颜色:

var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',0,0)';

答案 2 :(得分:1)

您应该研究将值转换为RGB和从HSB转换为HSB(有时称为HSI)。这种颜色模型的算法非常有意义。例如。要使用红色阴影,您可以从“纯”红色的HSB值(0,100,100)开始。变化S = 50%会给你一个“灰色”的红色阴影。改变B = 50%会给你带来“更暗”的红色阴影。