通过 jquery 获取 rgba 背景颜色

Posted

技术标签:

【中文标题】通过 jquery 获取 rgba 背景颜色【英文标题】:getting rgba background color by jquery 【发布时间】:2014-01-03 04:21:13 【问题描述】:

我有一个带有background-color:rgba(1,0,0,0) 的元素,我需要通过jquery 获取这个值来做某事。我试过$('.overlay').css("backgroundColor"),但它返回transparent。有什么方法可以通过 jquery 获取元素的 rgba 背景颜色?

顺便说一下,这是我的代码:

html:

<div class="overlay"></div>

css:

.overlay  background-color:rgba(1,0,0,0) 

jquery:

$('.overlay').css("backgroundColor");

【问题讨论】:

您使用的是哪个版本的 jQuery?如果我运行您提供的代码,我会返回rgba(1, 0, 0, 0)。见this jsFiddle 我正在使用 jquery-1.10.1 !! 这是一个浏览器问题,在 Firefox 中它返回透明,而在 Chrome 中它返回实际的 css 属性。 @codingstill 那么我可以将它用于 if 语句吗?我想说如果.overlaybackground-color 是例如rgba(1,0,0,0),做点什么。我可以吗? 为什么需要知道是 rgba(1,0,0,0) 还是 rgba(2,0,0,0)? 【参考方案1】:

正如@codingstill 指出的,Firefox 返回transparent。但你仍然可以这样做:

var bgColor = $('.overlay').css("backgroundColor");    
if(bgColor == 'transparent' || bgColor == 'rgba(1, 0, 0, 0)')
    //do stuff

【讨论】:

这只是一个hack,如果有不同颜色的类似规则怎么办,例如.overlay2 背景颜色:rgba(2,0,0,0) 。此外,在 IE11 中它根本不返回任何内容 :(. 正是codingstill,我的if语句是:if (bgColor == 'rgba(1,0,0,0)) do function A 'else if (bgColor == 'rgba(2,0,0,0)) do function B '! firefox 会假设两者都是透明的,所以我会在 firefox 中遇到问题吗?或者一般功能是一样的,我的代码可以在 Firefox 和 chrome 等中运行? @codingstill:确实。你是绝对正确的。它在 IE11 中返回 nothing ?!奇怪... rbga(2,0,0,0) 也定义了一个类?如果是这样,您可以检查元素是否具有特定的类。 @Lasse 确实很奇怪... @Pay4m:您究竟在寻找什么?透明度?

以上是关于通过 jquery 获取 rgba 背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

jquery更改背景颜色用户滚动

Html表格背景颜色透明度怎么调,只用HTML和css

如何使用jquery检查元素的背景颜色

jquery cookie插件轻松实现切换背景颜色

透明 CSS 背景颜色

如何使用 jQuery 为元素的背景不透明度设置动画?