2013-05-17 106 views
0

我发现这个代码在网上,但它不会做我想做的。十六进制转换到一个打火机十六进制颜色

function ColorLuminance(hex, lum) { 
    // validate hex string 
    hex = String(hex).replace(/[^0-9a-f]/gi, ''); 
    if (hex.length < 6) { 
     hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; 
    } 
    lum = lum || 0; 
    // convert to decimal and change luminosity 
    var rgb = "#", c, i; 
    for (i = 0; i < 3; i++) { 
     c = parseInt(hex.substr(i*2,2), 16); 
     c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16); 
     rgb += ("00"+c).substr(c.length); 
    } 
    return rgb; 
} 

所以我继续使用jQuery来改变周围框的背景颜色(被显示在投票结果(右侧),背景色)。

$(".bar-container").each(function() { 
    var hexColor = $(this).children(":first").css("background-color"); 
    var bgColor = ColorLuminance(hexColor, .2); 
    $(this).css({"background-color": bgColor}); 
}); 

这是在文档准备就绪时使用的。

我所试图做的是抓住实际调查的颜色(从是个左),使整个容器的颜色有点轻(但相同的基本色)。因此,如果百分比栏是红色的,则不应将包含栏的整体背景设为紫色。它应该使它变成红色的浅色。

ColorLuminance功能无法正常工作,导致它完全改变了颜色!

如何修改这个功能对于较浅的颜色? (最好基于百分比,这就是lum参数)

回答

0

要更改RGB颜色的亮度,我会将其转换为HSV颜色空间,您将获得色调(颜色),饱和度和值(亮度) 。所以你只能改变亮度。

然后你带回从HSV色彩空间的颜色RGB色彩试。

你可以找到一个HSV逆变器的JavaScript这里:http://www.javascripter.net/faq/rgb2hsv.htm 有关HSV的更多信息可以在这里找到:https://en.wikipedia.org/wiki/HSL_and_HSV

Can I force jQuery.css("backgroundColor") returns on hexadecimal format?也可以看看,颜色总是返回已为RGB看起来。

+1

好了,哇,没有意识到这是重新调整抢夺元素'backgroundColor'的jQuery的方法的RGB值。问题现在已经解决了。谢谢 :) –