如何根据给定的百分比计算三种颜色的平均值?
例如,我们绿色,黄色和红色,并希望获得平均值:
最简单的方法是创建一个像这样的图像:
增加/减少background-position
:
$('input').change(function(){
$('#color').css({
backgroundPosition: -this.value + "px 0"
});
});
http://fiddle.jshell.net/VY4D8/
...但我认为可以“更好”以rgb/a
或hex
作为输出。
仅供解释之用:
#ff0000
#ffc600
#ffee00
这个问题已经有了实现,或者你们其中一个人过去写了什么?
更新
得到了,感谢Eevee https://stackoverflow.com/a/15125778/1250044:
var div = document.getElementsByTagName('div')[0];
$('input').change(function () {
var max = this.getAttribute("max"),
cur = this.value / max * max,
r = Math.min(cur * 2, max),
g = Math.min(max * 2 - cur * 2, max),
rgb = g + "%, " + r + "%, 0%";
div.style.backgroundColor = "rgb(" + rgb + ")";
}).change();
答案 0 :(得分:2)
做数学吗?
你有:
rgb(100%, 0%, 0%)
rgb(100%, 100%, 0%)
rgb(0%, 100%, 0%)
如果你想找出11%的颜色:
找出它所属的部分。全光谱的11%位于红色和黄色之间的22%。
插值:22%的红色加上78%的黄色来自rgb(100%, 78%, 0%)
或#ffc600
。
答案 1 :(得分:-1)
你可以做那个CSS linear-gradient
。
演示:http://jsfiddle.net/ThinkingStiff/Jqdkq/
.gradient {
background: linear-gradient(
to right,
red, yellow, green
);
height: 20px;
width: 300px;
}
<div class="gradient"></div>