我正在尝试根据背景颜色更改颜色,使文本更易读。
在搜索过程中,我找到了这个:
var rgb = $('.external-event').css('background-color');
var c = 'rgb(' + rgb[0] + ',' + rgb[1] + ',' + rgb[2] + ')';
var o = Math.round(((parseInt(rgb[0]) * 299) + (parseInt(rgb[1]) * 587) + (parseInt(rgb[2]) * 114)) / 1000);
//console.log(o);
if (o > 125) {
$('.external-event').css('color', 'black');
} else {
$('.external-event').css('color', 'white');
}
$('.external-event').css('background-color', c);
var r = Math.round(Math.random() * 255);
var g = Math.round(Math.random() * 255);
var b = Math.round(Math.random() * 255);
rgb[0] = r;
rgb[1] = g;
rgb[2] = b;
问题在于它只显示白色,而不是变成黑色。
我做错了什么?
这里有一个JSFiddle。
由于某种原因,此示例与我的实际开发环境相反,并保持文本为黑色,即使有黑色背景。
编辑:我忘记添加了我动态显示多个背景颜色的同一类.external-event
,并且似乎只获取第一个元素的RGB值。
rgb
声明为JQuery包装集中第一个元素的背景颜色,该集合包含所有与.external-event
选择器匹配的元素。然后,您将rgb
视为数组,并使用rgb [0]
,rgb [1]
和rgb [2]
将生成的颜色值分配给它。 - Scott Marcuscss
返回表示元素的该样式属性值的字符串。不过他仍在错误地使用它... - Will P.