我有以下范围:
<span><b class="colored">' + this.my.points_gp + '</b></span>
this.my.points_gp
可以是-12到80之间的值。
现在我需要定义“彩色”类。我需要的是考虑其值this.my.points_gp
的颜色。
问题是范围之间的值应该有不同的颜色代码。我的意思是,70必须比40更绿,必须是绿色但更轻。 -6必须是红色和橙色之间的中间因素,因为它位于红色(-12)和橙色(0)的中间,依此类推......
我会尝试更好地解释自己:我需要92种不同的颜色并逐渐考虑我给出的基色。对不起我的英语,这不是我的母语。
我不知道这是否可能......可能是在javascript而不是普通的CSS?
答案 0 :(得分:2)
您可以调用函数colorize()
传递值v
,并将变量R
,G
,B
设置为适当的红绿蓝值对于v
的不同值。然后使用css选择器更改(如果此选择器不起作用,您可以更轻松地尝试jQuery)所选元素的文本(或背景)颜色。
function colorize(v){
// v is the value passed, range = [-12, 80]
var R = 0, G = 0, B = 0;
if (v <= 0){
low = -12, high = 0;
R = 255;
G = 0 + Math.floor((150 - 0)*(v - low)/(high - low));
B = 0;
}
else if (v >= 20){
low = 20, high = 80;
R = 150 - Math.floor((150 - 0)*(v - low)/(high - low));
G = 255;
B = 0;
}
else {
low = 0, high = 20;
mid = (low+high)/2;
if (v < mid) {
R = 255;
G = 150 + Math.floor((255 - 150)*(v - low)/(mid - low));
}
else {
R = 255 - Math.floor((255 - 150)*(v - mid)/(high - mid));
G = 255;
}
B = 0;
}
color = 'rgb(' + R + ',' + G + ',' + B + ')';
// if you want to change text color
document.querySelector("span b.colored").style.color = color;
// or if you want to change background color
//document.querySelector("span b.colored").style.backgroundColor = color;
}
p.s:最初是在python中写的,所以如果有错误,请检查不平衡的大括号。
答案 1 :(得分:0)
是的,可能的唯一方法是使用JavaScript或PHP代码(假设您使用PHP进行编码)。
以下是JavaScript的线索:
document.getElementsByClassName("colored")[1].style.color = "red";
希望这有帮助;)
答案 2 :(得分:0)
你的问题缺乏信息..希望你需要下面的一个:
if( this.my.points_gp >= -12 && this.my.points_gp < 0 ) {
<span class="very_red skiptranslate"><b>' + this.my.points_gp + '</b></span>
}
else if( this.my.points_gp >= 0 && this.my.points_gp < 20 ) {
<span class="orange skiptranslate"><b>' + this.my.points_gp + '</b></span>
}
else if( this.my.points_gp >= 20 && this.my.points_gp < 80 ) {
<span class="light_green skiptranslate"><b>' + this.my.points_gp + '</b></span>
}
else {
<span class="super_green skiptranslate"><b>' + this.my.points_gp + '</b></span>
}
答案 3 :(得分:0)
我会在跨度中添加一个ID,删除标签(将其替换为font-weight:bold),这样就可以了:
.colored{
font-weight:bold;
//other rules you may have
}
<span id="myId" class="colored">' + this.my.points_gp + '</span>
然后使用javascript我会添加一个类来改变颜色:
if( this.my.points_gp >= -12 && this.my.points_gp < 0 ) {
document.getElementById("myId")[1].style.color = "red";
}
else if( this.my.points_gp >= 0 && this.my.points_gp < 20 ) {
document.getElementById("myId")[1].style.color = "orange";
}
else if( this.my.points_gp >= 20 && this.my.points_gp < 80 ) {
document.getElementById("myId")[1].style.color = "lightgreen";
}
else {
document.getElementById("myId")[1].style.color = "darkgreen";
}