【问题标题】:Change the color of text depending of background image根据背景图像更改文本颜色
【发布时间】:2014-01-21 21:09:35
【问题描述】:

我需要解决我的问题(如果有的话):

我想检查 div 后面的背景图像的颜色值(在我的情况下为 .picturecenter),然后如果背景值很暗,则将颜色从黑色更改为白色。

这可能吗?

这是我的网站:http://myhrmans.com/hulebild2/(文本“欢迎”是目标) 我已经看过https://github.com/kennethcachia/Background-Check/ 并且还没有让它工作。

感谢您的帮助!

【问题讨论】:

标签: javascript html css colors


【解决方案1】:

您可以使用画布元素进行像素读取。在这里查看功能。

[通过javascript获取图像的平均颜色

您必须处理图像元素而不是具有图像背景的 div 元素。但是你可以从背景中解析出图像 src

var bg = $('.picturecenter').css('background-image')

然后只需在左右括号上执行一些子字符串即可获取 url。然后获取原始的 javascript img 元素。

var imgElement = document.createElement('img');
imgElement.src = bg;

并调用上面链接中的方法。

var colors = getAverageRGB(imgElement);

然后您可以将颜色平均在一起,看看它是否足够暗。像

var avg = (colors.r + colors.g + colors.b) / 3;
if (avg < 100)
    $('.textcenter').css('color', '#EEE')
else
    $('.textcenter').css('color', '#333')

【讨论】:

  • 我把它放在我的网站上,但我没有设法让它工作。我认为拉链接时出了点问题。它只给了我 url(imagelink) 而不是 imagelink。还是我做错了什么? myhrmans.com/hulebild2myhrmans.com/hulebild2/background.js
  • 没错。这就是为什么我说你需要做一些子字符串。 bg.substring(bg.indexOf('(') + 1, bg.indexOf(')') - 1)。这应该够了吧。我没有测试它,但它应该可以解决问题。
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 2016-06-02
  • 1970-01-01
  • 2019-06-23
  • 2023-04-05
  • 1970-01-01
  • 2014-07-25
  • 2019-01-08
相关资源
最近更新 更多