svg+css实现环形彩色统计图表效果代码
代码语言:html
所属分类:图表
代码描述:svg+css实现环形彩色统计图表效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<html> <head> <style> @import url(//fonts.googleapis.com/css?family=Oswald:400); body { background: #222428; font-family: "Oswald", sans-serif; } h1 { color: #eee; text-align: center; margin: 20px 0; text-transform: uppercase; } .chart { margin: 0 auto; width: 450px; height: 450px; position: relative; } .doughnutTip { position: absolute; float: left; min-width: 30px; max-width: 300px; padding: 5px 15px; border-radius: 1px; background: rgba(0,0,0,.8); color: #ddd; font-size: 17px; text-shadow: 0 1px 0 #000; text-transform: uppercase; text-align: center; line-height: 1.3; letter-spacing: .06em; box-shadow: 0 1px 3px rgba(0,0,0,0.5); transform: all .3s; pointer-events: none; } .doughnutTip:after { position: absolute; left: 50%; bottom: -6px; content: ""; height: 0; margin: 0 0 0 -6px; border-right: 5px solid transparent; border-left: 5px solid transparent; border-top: 6px solid rgba(0,0,0,.7); line-height: 0; } .doughnutSummary { position: absolute; top: 50%; left: 50%; color: #d5d5d5; text-align: center; text-shadow: 0 -1px 0 #111; cursor: default; } .doughnutSummaryTitle { position: absolute; top: 50%; width: 100%; margin-top: -27%; font-size: 22px; letter-spacing: .06em; } .doughnutSummaryNumber { position: absolute; top: 50%; width: 100%; margin-top: -15%; font-size: 55px; } .chart path:hover { opacity: .65; } </style> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery-3.2.1.min.js"></script> </head> <body> <div id="doughnutChart" class="chart"> </div> <script>; (function($, undefined) { $.fn.drawDoughnutChart = function(data, options) { var $this = this, W = $this.width(), H = $this.height(), centerX = W/2, centerY = H/2, cos = Math.cos, sin = Math.sin, PI = Math.PI, settings = $.extend({ segmentShowStroke: true, segmentStrokeColor: "#0C1013", segmentStrokeWidth: 1, baseColor: "rgba(0,0,0,0.5)", baseOffset: 4, edgeOffset: 10, //offset from edge of $this percentageInnerCutout: 75, animation: true, animationSteps: 90, animationEasing: "easeInOutExpo", animateRotate: true, tipOffsetX: -8, tipOffsetY: -45, tipClass: "doughnutTip", summaryClass: "doughnutSummary", summaryTitle: "TOTAL:", summaryTitleClass: "doughnutSummaryTitle", summaryNumberClass: "doughnutSummaryNumber", beforeDraw: function() {}, afterDrawed: function() {}, onPathEnter: function(e, data) {}, onPathLeave: function(e, data) {} }, options), animationOptions = { linear: function (t) { return t; }, easeInOutExpo: function (t) { var v = t < .5 ? 8*t*t*t*t: 1-8*(--t)*t*t*t; return (v > 1) ? 1: v; } }; var requestAnimFrame = function() { return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60); }; }(); settings.beforeDraw.call($this); var $svg = $('<svg width="' + W + '" height="' + H + '" viewBox="0 0 ' + W + ' ' + H + '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"></svg>').appendTo($this), $paths = [], easingFunction = animationOptions[settings.animationEasing], doughnutRadius = Min([H/2, W/2]) - settings.edgeOffset, cutoutRadiu.........完整代码请登录后点击上方下载按钮下载查看
网友评论0