如果 '元素' 具有透明背景如何判斷jQuery元素的背景是否透明?
$('element').css('background-color')
返回 '透明' 在某些瀏覽器和 'RGBA(0,0,0,0)' 在其他。
我會期望jQuery有跨瀏覽器的方式告訴我們一個元素是否有透明背景。
我錯過了什麼嗎?
謝謝
如果 '元素' 具有透明背景如何判斷jQuery元素的背景是否透明?
$('element').css('background-color')
返回 '透明' 在某些瀏覽器和 'RGBA(0,0,0,0)' 在其他。
我會期望jQuery有跨瀏覽器的方式告訴我們一個元素是否有透明背景。
我錯過了什麼嗎?
謝謝
rgba(0,0,0,0)與透明相同。最後一位是顏色應該是多少,0 =透明。
function background_color(element) {
if (element.css('background-color') === 'rgba(0, 0, 0, 0)'){
return 'transparent';
}
return element.css('background-color');
}
background_color($('element')) // will do the trick
有一點需要記住:像'rgba(255,255,255,0)'這樣的值也是完全透明的。只要最後一個值爲0,前3個值是什麼都沒關係,所以這裏有一些小誤報。 – rescuecreative
我不知道這對你來說是有用的,但你可以添加一個custom cssHook,並在那裏做處理。您也可以大概定義,所以你可以修改的.css(background-color)
的回報,但我沒有與cssHooks
足夠的經驗,知道如何不使其無限遞歸:/
$.cssHooks["nBackgroundColor"] = {//proxy to .css("background-color") called with .css("n-background-color")
get: function(elem) {
var back = $(elem).css("background-color");
return back === "rgba(0, 0, 0, 0)" ? "transparent" : back;
},
set: function(elem, val){ return $(elem).css('background-color', val); }
};
$($("div")[10]).css('n-background-color');//=> transparent
謝謝你。我不認爲我會在這裏使用它,但很高興知道! – Steve
試着用'如果($(」元素')。css('background-color')==='transparent'){}'。 – Vucko
@Vucko不會在鍍鉻 – megawac
爲什麼不能兩個? if($('element').css('background-color')==='transparent'|| $('element').css('background-color')==='rgba(0,0 ,0,0)'){}' – Floris