【发布时间】:2013-01-09 22:56:47
【问题描述】:
我正在尝试创建一些 jQuery 函数,将对象 bgcolor 更改为更亮或更暗(您将参数设置为色调的差异)。而且我认为它应该可以工作,但它会破裂。
$.fn.changeBg = function(difference){
var hexToRgb = function(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
var rgbToHex = function(r, g, b) {
return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
}
//returns color n-tones lighter or darker (for negavitve values) from given.
var changeColor = function(hex,tones){
var rgb = hexToRgb(hex);
rgb.r+=tones;
rgb.g+=tones;
rgb.b+=tones;
rgb.r=rgb.r>255?255:rgb.r;
rgb.r=rgb.r<0?0:rgb.r;
rgb.g=rgb.g>255?255:rgb.g;
rgb.g=rgb.g<0?0:rgb.g;
rgb.b=rgb.b>255?255:rgb.b;
rgb.b=rgb.b<0?0:rgb.b;
var hex = rgbToHex( rgb.r , rgb.g , rgb.b );
return hex;
}
var bgColor = $(this).css('background-color');
var secColor = changeColor(bgColor,difference);
$(this).css('background-color',secColor);
}
Fiddle - 知道这有什么问题吗?
【问题讨论】:
-
javascript 控制台有答案 ;) 您可能想在调用
.exec()之后添加console.log(hex, result);。 -
善待使用它的人,并选择一个有专用通道用于亮度、HSV、HSL、HSB 等的色彩空间。
标签: javascript jquery colors hex