これが私がjsfiddleでjQueryを使用して思いついた簡単な解決策です
また、この方法を使用する場合、background-colorの値はrgb(50、205、50)からlime、#32CD32までの任意の値にすることができ、それでも機能することに注意してください。
あなたのhtmlの場合:
<div id="test" style="background-color: #000000;">Can you see this text?</div>
そしてjavascript:
$(document).ready(function(){
var color = $('#test').css('background-color');
var startIndex = color.indexOf('(') + 1;
var lastIndex = color.indexOf(')');
var values = color.substr(startIndex, lastIndex - startIndex).split(',');
var r = 0;
var g = 0;
var b = 0;
$(values).each(function(i) {
if (i == 0) {
r = 255 - values[i];
}
if (i == 1) {
g = 255 - values[i];
}
if (i == 2) {
b = 255 - values[i];
}
});
$('#test').css('color', 'rgb(' + r + ',' + g + ',' + b + ')');
});
編集:jquery以外の方法(ライム、ブルー、レッドなどの色名では機能しません)
function invert(color) {
var startIndex = color.indexOf('(') + 1;
var lastIndex = color.indexOf(')');
var values = color.substr(startIndex, lastIndex - startIndex).split(',');
var r = 0;
var g = 0;
var b = 0;
for(i= 0; i < values.length; i++) {
if (i == 0) {
r = 255 - values[i];
}
if (i == 1) {
g = 255 - values[i];
}
if (i == 2) {
b = 255 - values[i];
}
}
return 'rgb(' + r + ',' + g + ',' + b + ')';
}