Хотя зависит от браузера, это не значит, что вам нужно бороться с несоответствиями браузера и пытаться угадать, какие строки вернет каждый браузер (оба сейчас и в будущем ). В настоящее время он прозрачен в IE и Firefox, а rgba (0, 0, 0, 0) в браузерах Webkit, но это может измениться.
Вместо того, чтобы жестко кодировать строки и доверять браузерам, чтобы дать вам то, что вы ожидаете, вы можете найти и проверить точное имя, которое этот браузер посетителя фактически использует для background-color
фиктивного элемента с background:none;
.
// Get this browser's take on no fill. Append, else Chrome returns 'initial'
var $temp = $('<div style="background:none;display:none;"/>').appendTo('body');
var transparent = $temp.css('backgroundColor');
$temp.remove();
// Use it
if ( $elem.css('backgroundColor') != transparent ) {
// It's set
} else {
// It's blank
}
Даже если какой-нибудь безумный будущий браузер решит использовать имя «Clive» для background-color
элементов, для которых не установлен ни один (или, более реалистично, может быть что-то, основанное на схеме, которая лучше работает со всей гаммой sRGB или цветовые профили экрана) это все равно будет работать.
Вот пример JSBIN в контексте ответа на вопрос Как определить унаследованный цвет фона элемента с помощью jQuery / JS?
Имейте в виду, что некоторые браузеры несовместимы с самими собой в зависимости от того, является ли элемент частью тела документа или нет. Итак, убедитесь, что вы сравниваете как с как.
Например, в Chrome:
$('<div/>').css('backgroundColor');
// returns '' empty string
$('<div style="background:none;"/>').css('backgroundColor');
// returns 'initial'
$('<div style="background:none;"/>').appendTo('body').css('backgroundColor');
// returns 'rgba(0, 0, 0, 0)'