我需要用CSS,JS或你建议的方法来实现进度条。 我需要它是多色的...基于百分比。
例如,如果我的值为50%,则进度条应为浅蓝色至30%,绿色应为30%至50%。
所以,我设置style="width:xx%"
来设置百分比。
是否有创建多色进度条的方法?
我试过这个:
.progressMulti {
height: 32px;
width: 100%;
border: 1px solid #ddd;
border-radius: 15px;
text-align: center;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: #333;
font-size: 20px;
background: linear-gradient(to right, green 75%, blue 20%, red 5%);
}
但是如果设置为宽度50%,例如,我可以看到所有颜色......相反,它应该只是浅蓝色和绿色,具有50%的值。
答案 0 :(得分:1)
function set_progress(_num){
$('#progress').empty();
var el_1_width=0;
var el_2_width=0;
var el_3_width=0;
var el_4_width=0;
if(_num>30){el_1_width=30;}else{el_1_width=_num;}
if(_num>60){el_2_width=30;}else{el_2_width=_num-el_1_width;}
if(_num>80){el_3_width=30;}else{el_3_width=_num-el_1_width-el_2_width;}
if(_num>90){el_4_width=_num-90;}
var new_font_clor='';
if(_num<55){new_font_clor='color:black';}
$('#progress').append('<div class="progress-text" style="'+new_font_clor+'">'+_num+' %</div>');
$('#progress').append('<div class="progress-el" style="background-color:blue; width:'+el_1_width+'%;"> </div>');
$('#progress').append('<div class="progress-el" style="background-color:green; width:'+el_2_width+'%;"> </div>');
$('#progress').append('<div class="progress-el" style="background-color:yellow; width:'+el_3_width+'%;"> </div>');
$('#progress').append('<div class="progress-el" style="background-color:red; width:'+el_4_width+'%;"> </div>');
}
set_progress(12);
#progress{
border-style:solid;
border-color:black;
//border-width:4px;
}
.progress-el{
display:inline-block;
height:40px;
}
.progress-text{
position:fixed;
color:white;
font-weight:bold;
width:100%;
height:40px;
line-height:40px;
text-align:center;
font-size:24pt;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="progress"></div>
<input type="button" value="set 17%" onclick="set_progress(17);">
<input type="button" value="set 31%" onclick="set_progress(31);">
<input type="button" value="set 45%" onclick="set_progress(45);">
<input type="button" value="set 67%" onclick="set_progress(67);">
<input type="button" value="set 82%" onclick="set_progress(82);">
<input type="button" value="set 97%" onclick="set_progress(97);">
答案 1 :(得分:0)
如何使用HTML画布?有关示例,请参阅https://jsfiddle.net/y8m8pk1m/。
<!DOCTYPE html>
<html>
<body>
<canvas id="myCanvas" width="300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.fillStyle = "blue";
ctx.fillRect(20, 20, 70, 20);
ctx.stroke();
ctx.fillStyle = "red";
ctx.fillRect(90, 20, 50, 20);
ctx.stroke();
ctx.fillStyle = "black";
ctx.fillRect(140, 20, 50, 20);
ctx.stroke();
</script>
</body>
</html>
如果您正在寻找关于此引用的稍微复杂的示例,https://github.com/anurag-sinha/utils/tree/master/widgets/Gauges/analog这是一个代表标量的模拟量表(您可以下载并在Chrome中运行Analog.html)。你基本上只需要这个仪表的彩色阈值条。模拟仪表稍微复杂,因为它涉及一些算术来计算旋转角度等,但在你的情况下应该相当简单(使用fillRect)。您可以在类似的行上构建窗口小部件。