【发布时间】:2021-07-07 11:14:55
【问题描述】:
我有一些彩色文本来表示质量(红色 = 差,绿色 = 好)。
当质量为 50% 时,文本为黄色且几乎无法辨认。有什么办法可以让渐变从红色到绿色,中间没有黄色?
(质量可以是任何值,因此手动设置颜色不起作用。)
for(i=0;i<=100;i+=10) {
$('body').append('<div style="color:' + color(i/100) + '">Quality ' + i + '</div>');
}
function color(quality) {
var h = 355 + 125 * quality;
var s = 130 - 60 * quality;
var l = 60;
return 'hsl(' + h + ', ' + s + '%, ' + l + '%)';
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
还有一个替代方法是这个函数,但它只是在中间返回一个难看的棕色:
for(i=0;i<=100;i+=10) {
$('body').append('<div style="color:' + color(i/100) + '">Quality ' + i + '</div>');
}
function color(quality) {
var r = 255 * (1 - quality);
var g = 255 * quality;
var b = 0;
return 'rgb(' + r + ', ' + g + ', ' + b + ')';
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
【问题讨论】:
-
我担心我要问的问题在物理上是不可能的 :D 但是其他人是如何解决这个问题的?当然,渐变红色->绿色并不少见..
-
你可以分成两个范围,然后你应该选择中间点。常见的是白色(而不是黄色)。您可以选择蓝色/紫色(但在这种情况下,请选择浅色)。
-
@Andreas 不,那篇文章中的答案是我的起点——红色->黄色->绿色的渐变。这导致 50% 的文本几乎难以辨认
标签: javascript colors