<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>正五边形可以随着值得变化改变图形</title>
<style type="text/css">
.canvasBox{
position: relative;
border: 1px dotted #ccc;
padding: 2rem;
background-color: #fff
}
.canvasBox .inner {
margin: 2.5rem auto 0;
transform: rotate(180deg);
-ms-transform: rotate(180deg); /* Internet Explorer 9*/
-moz-transform: rotate(180deg); /* Firefox */
-webkit-transform: rotate(180deg); /* Safari 和 Chrome */
-o-transform: rotate(180deg); /* Opera */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
padding: 1rem;
background-color: #fff;
}
.canvasBox canvas {
margin: 0 auto;
}
.canvasBox .inner .re {
text-align: center;
line-height: 1.2;
transform: rotate(180deg);
-ms-transform: rotate(180deg); /* Internet Explorer 9*/
-moz-transform: rotate(180deg); /* Firefox */
-webkit-transform: rotate(180deg); /* Safari 和 Chrome */
-o-transform: rotate(180deg); /* Opera */
}
.canvasBox .inner .re span {
font-size: 1.2rem;
}
</style>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
</head>
<body>
<div class="canvasBox">
<div class="inner" id="u103"></div>
<script type="text/javascript">
(function () {
var Radar = function (cfg) {
var pH = window.screen.height;
var pW = window.screen.width;
var container = document.getElementById('u103');
var cans = document.createElement("canvas");
str = document.getElementById("u103").innerHTML;
if (str.length == 0) {
container.appendChild(cans);
}
var ctx = cans.getContext("2d");
var data = cfg.data;
var w = cfg.width;
var h = cfg.height;
// container.style.position = "relative";
container.style.width = w + "px";
container.style.height = h + "px";
cans.width = w;
cans.height = h;
var step = data.length;
var r = w / 2;
//绘制网格背景
var isBlue = false;
for (var s = 1; s > 0; s--) {
ctx.beginPath();
for (var i = 0; i < 10; i++) {
var rad = 2 * Math.PI / step * i;
var x = r + Math.sin(rad) * r * (1);
var y = r + Math.cos(rad) * r * (1);
ctx.lineTo(x, y);
}
ctx.closePath();
ctx.fillStyle = (isBlue = !isBlue) ? '#F1F3F2' : '#F1F3F2';
ctx.fill();
}
//绘制伞骨
ctx.beginPath();
for (var i = 0; i < step; i++) {
var rad = 2 * Math.PI / step * i;
var x = r + Math.sin(rad) * r;
var y = r + Math.cos(rad) * r;
ctx.lineTo(x, y);
var text = document.createElement("div");
text.innerHTML = data[i][0];
text.style.position = "absolute";
//text.style.font = "9px Verdana";
//添加文本
if (x > r) {
text.style.width = '150px';
if (i==1) {
text.style.left = x - 35 + 'px';
} else {
text.style.left = x - 30 + 'px';
}
} else {
text.style.width = '150px';
if (i == 0) {
text.style.right = (w - x - 60) + 'px';
} else if (i==4)
{
text.style.right = (w - x - 35) + 'px';
}
else {
text.style.right = (w - x - 25) + 'px';
}
}
if (y > r) {
if (i == 0) {
text.style.top = (y+12) + 'px';
} else {
text.style.top = y + 'px';
}
} else {
if (i == 2 || i == 3) {
text.style.bottom = (h - y+10) + 'px';
} else {
text.style.bottom = (h - y) + 'px';
}
}
container.appendChild(text);
}
ctx.strokeStyle = "#F1F3F2"
ctx.stroke();
//绘制折线
ctx.beginPath();
for (var i = 0; i < step; i++) {
var rad = 2 * Math.PI / step * i;
var x = r + Math.sin(rad) * r * data[i][1];
var y = r + Math.cos(rad) * r * data[i][1];
ctx.lineTo(x, y);
}
ctx.closePath();
ctx.fillStyle = '#90EFEC';
ctx.fill();
}
window["Radar"] = Radar;
})();
function covertnum(num) {
if (num >= 1) {
num = num / 10;
}
if (num == 0) {
return 0.1;
} else {
return num;
}
}
var radar = new Radar({
el: "#u103",
width: $('.canvasBox').width() - 100,
height: $('.canvasBox').width() - 100,
data:
[["<div class=\"re\"><span>第一个边</span><br><span>" + 10 + "分</span></div>", covertnum(10)],
["<div class=\"re\"><span>第二个边</span><br><span>" + 9.9 + "分</sapn></div>", covertnum(9.9)], //
["<div class=\"re\"><span>第三个边</span> <br><span>" + 8.2 + "分</span></div > ", covertnum(8.2)],
["<div class=\"re\"><span>第四个边</span><br><span>" + 8.5 + "分</span></div>", covertnum(4.5)],
["<div class=\"re\"><span>第五个边</span><br><span>" + 8.0 + "分</span></div>", covertnum(5.0)]]
});
</script>
</div>
</body>
</html>
源码下载地址:https://download.csdn.net/download/it_ziliang/11250859