如果 '元素' 具有透明背景如何判断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