svg+js实现圆圈数字进度条动画i效果代码
代码语言:html
所属分类:进度条
代码描述:svg+js实现圆圈数字进度条动画i效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet"> <style> body { background: #18222F; } .wrapper { position: absolute; width: 400px; height: 400px; margin: auto; top: 0; bottom: 0; left: 0; right: 0; display: flex; flex-direction: row; } .container { flex: 1; padding: 0 20px; } </style> </head> <body> <div class="wrapper"> <div class="container chart" data-size="400" data-value="88" data-arrow="up"> </div> </div> <!-- partial --> <script > // // Library // var Dial = function(container) { this.container = container; this.size = this.container.dataset.size; this.strokeWidth = this.size / 8; this.radius = (this.size / 2) - (this.strokeWidth / 2); this.value = this.container.dataset.value; this.direction = this.container.dataset.arrow; this.svg; this.defs; this.slice; this.overlay; this.text; this.arrow; this.create(); } Dial.prototype.create = function() { this.createSvg(); this.createDefs(); this.createSlice(); this.createOverlay(); this.createText(); this.createArrow(); this.container.appendChild(this.svg); }; Dial.prototype.createSvg = function() { var svg = document.createElementNS("http://www.w3.org/2000/svg", "svg"); svg.setAttribute('width', this.size + 'px'); svg.setAttribute('height', this.size + 'px'); this.svg = svg; }; Dial.prototype.createDefs = function() { var defs = document.createElementNS("http://www.w3.org/2000/svg", "defs"); var linearGradient = document.createElementNS("http://www.w3.org/2000/svg", "linearGradient"); linearGradient.setAttribute('id', 'gradient'); var stop1 = document.createElementNS("http://www.w3.org/2000/svg", "stop"); stop1.setAttribute('stop-color', '#6E4AE2'); stop1.setAttribute('offset', '0%'); linearGradient.appendChild(stop1); var stop2 = document.createElementNS("http://www.w3.org/2000/svg", "stop"); stop2.setAttribute('stop-color', '#78F8EC'); stop2.setAttribute('offset', '100%'); linearGradient.appendChild(stop2); var linearGradientBackground = document.createElementNS("http://www.w3.org/2000/svg", "linearGradient"); linearGradientBackground.setAttribute('id', 'gradient-background'); var stop1 = document.createElementNS("http://www.w3.org/2000/svg", "stop"); stop1.setAttribute('stop-color', 'rgba(0, 0, 0, 0.2)'); stop1.setAttribute('offset', '0%'); linearGradientBackground.appendChild(stop1); var stop2 = document.createElementNS("http://www.w3.org/2000/svg", "stop"); stop2.setAttribute('stop-color', 'rgba(0, 0, 0, 0.05)'); stop2.setAttribute('offset', '100%'); linearGradientBackground.appendChild(stop2); defs.appendChild(linearGradient); defs.appendChild(linearGradientBackground); this.svg.appendChild(defs); this.defs = defs; }; Dial.prototype.createSlice = function() { var slice = document.createElementNS("http://www.w3.org/2000/svg", "path"); slice.setAttribute('fill', 'none'); slice.setAttribute('stroke', 'url(#gradient)'); slice.setAttribute('stroke-width', this.strokeWidth); slice.setAttribute('transform', 'translate(' + this.strokeWidth / 2 + ',' + this.strokeWidth / 2 + ')'); slice.setAttribute('class', 'animate-draw'); this.svg.appendChild(slice); this.slice = slice; }; Dial.prototype.createOverlay = function() .........完整代码请登录后点击上方下载按钮下载查看
网友评论0