【问题标题】:How to get the background color code of an element in hex?如何以十六进制获取元素的背景颜色代码?
【发布时间】:2011-08-25 08:19:34
【问题描述】:

如何获取元素的背景颜色代码?

console.log($(".div").css("background-color"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="div" style="background-color: #f5b405"></div>

我想要什么

#f5b405

【问题讨论】:

  • 你想用这个值做什么?
  • 我想为背景颜色设置动画 - $(this).animate({ backgroundColor: '#f5b405' }, 'fast');
  • 但我刚刚发现我也可以使用 rgb 代码为背景颜色设置动画!大声笑

标签: javascript jquery css hex background-color


【解决方案1】:

检查下面的示例链接并单击 div 以获取十六进制的颜色值。

var color = '';
$('div').click(function() {
  var x = $(this).css('backgroundColor');
  hexc(x);
  console.log(color);
})

function hexc(colorval) {
  var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
  delete(parts[0]);
  for (var i = 1; i <= 3; ++i) {
    parts[i] = parseInt(parts[i]).toString(16);
    if (parts[i].length == 1) parts[i] = '0' + parts[i];
  }
  color = '#' + parts.join('');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='div' style='background-color: #f5b405'>Click me!</div>

http://jsfiddle.net/DCaQb/查看工作示例

【讨论】:

  • 有时$(this).css('backgroundColor') 返回rgba(n, n, n, n)
  • 用你的函数玩了一下,以自动化设计现代化等等......示例使用场景jsfiddle.net/DCaQb/625 - 不完美但可能对某人有帮助,所以我在这里链接以供参考
  • 感谢这个代码示例。可能只想将该 hexc 函数重写为返回字符串的真实函数,而不是设置全局变量。
【解决方案2】:

对此有一点小技巧,因为当设置了某些属性(如 strokeStylefillStyle)时,HTML5 画布需要解析颜色值:

var ctx = document.createElement('canvas').getContext('2d');
ctx.strokeStyle = 'rgb(64, 128, 192)';
var hexColor = ctx.strokeStyle;

【讨论】:

  • 我相信这是新 html5 浏览器的最佳方法 :)
【解决方案3】:
function getBackgroundColor($dom) {
    var bgColor = "";
    while ($dom[0].tagName.toLowerCase() != "html") {
      bgColor = $dom.css("background-color");
      if (bgColor != "rgba(0, 0, 0, 0)" && bgColor != "transparent") {
        break;
      }
      $dom = $dom.parent();
    }
    return bgColor;
  }

在 Chrome 和 Firefox 下正常工作

【讨论】:

    【解决方案4】:

    您拥有只需将其转换为所需格式的颜色。

    这是一个可以解决问题的脚本:http://www.phpied.com/rgb-color-parser-in-javascript/

    【讨论】:

      【解决方案5】:

      实际上,如果某个元素下没有background-color的定义,Chrome会将其background-color输出为rgba(0, 0, 0, 0),而Firefox输出为transparent

      【讨论】:

        【解决方案6】:

        我美丽的非标解决方案

        HTML

        <div style="background-color:#f5b405"></div>
        

        jQuery

        $(this).attr("style").replace("background-color:", "");
        

        结果

        #f5b405
        

        【讨论】:

          【解决方案7】:

          添加@Newred 解决方案。 如果你的风格不仅仅是background-color,你可以使用这个:

          $(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1]
          

          【讨论】:

          • 我喜欢这种方式
          【解决方案8】:

          此解决方案利用了@Newred 和@Radu Diță 所说的部分内容。但适用于不太标准的情况。

           $(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1].replace(/\s/g, '');
          

          他们两个都有的问题是都没有检查 background-color: 和颜色之间的空格。

          所有这些都将与上面的代码匹配。

           background-color: #ffffff
           background-color:      #fffff;
           background-color:#fffff;
          

          【讨论】:

            猜你喜欢
            • 2012-09-21
            • 2017-06-25
            • 2018-06-06
            • 2014-03-03
            • 1970-01-01
            • 2011-10-25
            • 1970-01-01
            • 2019-07-20
            • 2011-09-06
            相关资源
            最近更新 更多