Javascript 获取CSS背景图像的像素颜色
我需要获得鼠标指针当前悬停的任何像素的颜色。 我为canvas元素找到了几种解决方案,但对于CSS中为元素定义的背景图像,没有一种解决方案Javascript 获取CSS背景图像的像素颜色,javascript,css,colors,background,onmouseover,Javascript,Css,Colors,Background,Onmouseover,我需要获得鼠标指针当前悬停的任何像素的颜色。 我为canvas元素找到了几种解决方案,但对于CSS中为元素定义的背景图像,没有一种解决方案 我如何才能做到这一点?结合和的答案,我能够模拟您正在寻找的: 这还包括对CSS的更改:结合来自和的答案,我能够模拟您正在寻找的内容: 这还包括对CSS的更改:您尝试了什么?有任何JS代码或示例无法正常工作吗?可能的重复要获取背景图像的CSS值,请尝试以下操作:注意,IES的旧版本存在浏览器兼容性问题。您尝试了什么?有任何JS代码或示例无法正常工作吗?可能的重
我如何才能做到这一点?结合和的答案,我能够模拟您正在寻找的:
这还包括对CSS的更改:结合来自和的答案,我能够模拟您正在寻找的内容:
这还包括对CSS的更改:您尝试了什么?有任何JS代码或示例无法正常工作吗?可能的重复要获取背景图像的CSS值,请尝试以下操作:注意,IES的旧版本存在浏览器兼容性问题。您尝试了什么?有任何JS代码或示例无法正常工作吗?可能的重复要获取背景图像的CSS值,请尝试以下操作:注意,与旧版本的IET存在浏览器兼容性问题。这很好!我使用这些图像作为背景图像,因为将不同的图像缩放到预览div的大小(固定大小)具有优势。当图像缩放时,您的方法不再正常工作。我试图将计算样式移动到鼠标移动功能中,但我运气不好。。你对我的方向有什么提示吗?@user2556555我做了一次编辑,解释了一些缩放。你可以试一试,这个对我不管用。鼠标上只显示颜色0,0,0everywhere@ashleedawg有趣。我已经5年没看这篇文章了。控制台中有大量错误。。有关尝试加载丢失的资源的内容。当我有时间排除故障时,我会尽量记得回到这里来。这太棒了!我使用这些图像作为背景图像,因为将不同的图像缩放到预览div的大小(固定大小)具有优势。当图像缩放时,您的方法不再正常工作。我试图将计算样式移动到鼠标移动功能中,但我运气不好。。你对我的方向有什么提示吗?@user2556555我做了一次编辑,解释了一些缩放。你可以试一试,这个对我不管用。鼠标上只显示颜色0,0,0everywhere@ashleedawg有趣。我已经5年没看这篇文章了。控制台中有大量错误。。有关尝试加载丢失的资源的内容。当我有时间解决问题时,我会尽量记得回到这里来。
<html>
<head>
<style type="text/css">
#test {
background-image: url('http://jsfiddle.net/img/logo.png');
background-color: blue;
background-repeat: no-repeat;
height: 30px;
width: 100%;
}
#hidden {
display: none;
}
</style>
<script type="text/javascript">
var div = document.getElementById("test");
var style = window.getComputedStyle(div);
div.onmousemove = function(e) {
var path = style.getPropertyValue('background-image');
path = path.substring(4, path.length-1);
var img = document.getElementById("i1");
img.src = path;
var canvas = document.getElementById("c1");
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);
var pixelData = canvas.getContext('2d').getImageData(event.offsetX, event.offsetY, 1, 1).data;
var values = document.getElementById("values");
values.innerHTML = 'R: ' + pixelData[0] + '<br>G: ' + pixelData[1] + '<br>B: ' + pixelData[2] + '<br>A: ' + pixelData[3];
};
</script>
</head>
<body>
<div id="test"></div>
<div id="hidden">
<img id="i1" src="" />
<canvas id="c1"></canvas>
</div>
<div id="values"></div>
</body>
</html>
var h = parseInt(style.getPropertyValue("width")),
w = parseInt(style.getPropertyValue("height"));
var img = document.getElementById("i1");
img.src = path;
var canvas = document.getElementById("c1");
canvas.width = h;
canvas.height = w;
canvas.getContext('2d').drawImage(img, 0, 0, w, h);