数据占比图
这种实现,有什么思路?
https://jsfiddle.net/4b8p7kst/5/圆角不太好实现
<html> <head> <style type="text/css"> .bar { height: 1em; position: relative; } .base { height: 100%; background: linear-gradient(to right, rgba(196,196,196,1) 0, rgba(196,196,196,1) 5px, rgba(196,196,196,0) 5px,rgba(196,196,196,0) 10px) repeat; background-size: 10px 100%; } .percent { position: absolute; top:0; left:0; height: 100%; background: linear-gradient(to right, #F00 0%, #FF0 100%); } .mask { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to right, rgba(255,255,255,0) 0, rgba(255,255,255,0) 5px, rgba(255,255,255,1) 5px,rgba(255,255,255,1) 10px) repeat; background-size: 10px 100%; } </style> </head> <body> <div class="bar"> <div class="base"></div> <div class="percent"></div> <div class="mask"></div> </div> </body> </html>
好好玩,我是为了省注释才用中文,建议变量和方法名用英文哦。
可以玩的例子:https://codepen.io/anon/pen/o...
代码:
var 标记条数 = 68; var 每条高度 = 18; var canvas1 = document.getElementById("canvas1"); var canvas2 = document.getElementById("canvas2"); var canvas3 = document.getElementById("canvas3"); 画图(30, canvas1); 画图(50, canvas2); 画图(70, canvas3); function 画图(输入百分比, canvas) { canvas.height = 每条高度 * 2; var ctx = canvas.getContext("2d"); var 总宽度 = canvas.width; var 间隔数 = 标记条数 - 1; var 总条数 = 标记条数 + 间隔数; var 每条宽度 = 总宽度 / 总条数; var 颜色条数 = parseInt(标记条数 * 输入百分比 / 100); var 颜色数组 = 获取颜色数组(颜色条数); var 默认颜色 = "#eee"; for (var i = 0; i < 总条数; i++) { var 横向坐标 = 每条宽度 * 2 * i; if (i < 颜色数组.length) { ctx.fillStyle = 颜色数组[i]; ctx.fillRect(横向坐标, 10, 每条宽度, 每条高度); } else { ctx.fillStyle = 默认颜色; ctx.fillRect(横向坐标, 10, 每条宽度, 每条高度); } } } function 获取颜色数组(colorLevel) { var colors = []; //默认的最深颜色 var red = 255, green = 0, blue = 0; //最浅颜色是255,200,0 比如:最浅颜色的 green 是 200 则差值为 200-0=200 var maxRed = 0, maxGreen = 200, maxBlue = 0; var level = colorLevel; while (level--) { colors.push("rgb(" + red + "," + green + "," + blue + ")"); red += parseInt(maxRed / colorLevel); green += parseInt(maxGreen / colorLevel); blue += parseInt(maxBlue / colorLevel); } return colors; }
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
https://jsfiddle.net/4b8p7kst/5/
圆角不太好实现
好好玩,我是为了省注释才用中文,建议变量和方法名用英文哦。
可以玩的例子:
https://codepen.io/anon/pen/o...
代码: