2013-02-07 44 views
1

我需要这样的:如何检查CSS背景颜色是否为白色?

$('*').each(function() { 
     if($(this).css("background-color") == "#ffffff") { 
      $(this).css("background-color") == "#000000" 
     } 
    });​​​​ 

到的onclick工作的类。

+0

怎么做,这是平凡一些google.com和jquery.com搜索发现。 –

+0

有比这更好的方法。请解释一些你确切的问题,所以我们可以提供帮助 – Undefined

+1

我认为这是一个相当好的问题(它不是一个可以预期的“微不足道的答案”),但它缺少重要的信息,主要是:**描述问题和/或什么“不起作用”** - 请添加:)另外,我会建议使用样式表和/或CSS类,如果在所有的选项。它会更快,更易于维护。 – 2013-02-07 00:28:08

回答

2

即使它是正确的(不是),它将是不可靠的,不太可能工作。其理由是,有表示白颜色的几种方法:

  • white
  • #ffffff及其
  • #fff所有64个的情况下它们的组合和
  • rgb(255,255,255)和所有∞所有8的情况下的组合值之间任意空白的组合
  • rgba(255,255,255,1)和所有∞任意空白的组合值

你可以检查它是这样的:

if($(this).css("background-color").match(/^(?:white|#fff(?:fff)?|rgba?\(\s*255\s*,\s*255\s*,\s*255\s*(?:,\s*1\s*)?\))$/i)) 
    this.style.backgroundColor = "#000"; 
+0

请问downvoter请解释一下吗? –

+1

我没有投票,但必须有一种方式来以更清晰的方式获取(数字)颜色值..也http://jsfiddle.net/hSn9m/似乎表明 - 至少在Safari(最新版本),FF 18和IE 9 - 已标准化。但是,我不知道这个行为在别处是什么,或者它是如何定义的。 – 2013-02-07 00:21:05

+0

@pst一些浏览器(主要是更新的)会将其标准化为rgb()格式的不透明颜色,而rgba()则将其转换为半透明颜色。但是,旧版浏览器不会。这是一个跨浏览器的答案。 –