0

大家好,我遇到了一个问题,希望有人可以帮助我,

我有一个JSFiddle 这里将平均颜色应用于新的 div 块,所以我知道它正在工作,但我无法将它们应用于渐变背景,而且我认为我有一些严重的问题,这里是 repo

问题肯定出在这部分代码中,我建议将其克隆出来以供审查

    var isWebkit = 'webkitRequestAnimationFrame' in window;
    var values   = $.makeArray($('.value'));

    for(var i = 0; i < sigma; i++)
    {
        var newColor = [
            Math.floor(minColor[0]+maxIncrements[0]*i),
            Math.floor(minColor[1]+maxIncrements[1]*i),
            Math.floor(minColor[2]+maxIncrements[2]*i)
        ];

        var hex = this.toHex(newColor[0], newColor[1], newColor[2]);

        (isWebkit) ? $(values[i]).css('background', '-webkit-gradient(linear, left top, left bottom, from(#'+hex+'), to(#000));')
                   : $(values[i]).css('background', '-moz-linear-gradient(top, #'+hex+',  #000);');
    }

    for(var i = 1; i < sigma+1; i++)
    {
        var newColor = [
            Math.min(255,Math.floor(maxColor[0]+minIncrements[0]*i)),
            Math.min(255,Math.floor(maxColor[1]+minIncrements[1]*i)),
            Math.min(255,Math.floor(maxColor[2]+minIncrements[2]*i))
        ];

        var hex = this.toHex(newColor[0], newColor[1], newColor[2]);

        var c = (sigma+i);

        if (c <= values.length) // prevent overlap if we have an odd sigma
        {
            (isWebkit) ? $(values[c]).css('background', '-webkit-gradient(linear, left top, left bottom, from(#'+hex+'), to(#000));')
                       : $(values[c]).css('background', '-moz-linear-gradient(top, #'+hex+',  #000);');

        }
    }

编辑

与我的小提琴相比,在我的版本中看起来我没有迭代,并且总是以一个 000000 的十六进制结束???

4

1 回答 1

1

问题是它试图在没有考虑哈希时解析哈希

修复

    /** hex parsers */
    (
        function(a)
        {
            a["toRGB"] = function(a)
            {
                var b = parseInt(a.replace('#', ''), 16); //drop our hash if it exists
                return[b>>16,b>>8&255,b&255]
            };

            a["toHex"] = function(a,b,c)
            {
                return'#'+(c|b<<8|a<<16|1<<24).toString(16).slice(1) // re-add our hash
            }
        })(this);
于 2013-11-01T16:47:14.717 回答