其实需求是这么一个基于日期的环形进度条,开始用css3写了一下感觉太麻烦了,于是抽了点时间用svg画了一个。

不多说 上代码:

css:

<style>
circle {
-webkit-transition: stroke-dasharray .25s;
transition: stroke-dasharray .25s;
}
</style> html:
<div id="div1" style="width:150px;height:150px;position: relative;">
<svg width="150" height="150" viewbox="0 0 300 300">
<circle cx="150" cy="150" r="130" stroke-width="20" stroke="#f2f2f2" fill="none"></circle>
<circle cx="150" cy="150" r="130" stroke-width="20" stroke="#4d91ee" fill="none" transform="matrix(0,-1,1,0,0,300)"></circle>
</svg>
<span id="t" style="color:#4d91ee;position: absolute; top: 50%;left:50%;">70</span>
</div> js:
  //获取当前时间设置为开始时间,年月日
var StartDate = new Date(), StartYear = 2016, StartMonth = 1, StartDay = 2;
// var StartDate = new Date(), StartYear = StartDate.getFullYear(), StartMonth = StartDate.getMonth() + 1, StartDay = StartDate.getDate();
//设置结束时间,年月日(结束时间为6月30日)
var EndDate = new Date(), EndYear = 2016, EndMonth = 6, EndDay = 30;
// var EndDate = new Date(), EndYear = EndDate.getFullYear(), EndMonth = 6, EndDay = 30;
var MinStartTime=StartYear + '-1-1';//设置最小时间
MinStartTime = MinStartTime.replace(/-/g, '/');
MinStartTime = new Date(MinStartTime); var StartTime = StartYear + '-' + StartMonth + '-' + StartDay;
StartTime = StartTime.replace(/-/g, '/');
StartTime = new Date(StartTime);
var EndTime = EndYear + '-' + EndMonth + '-' + EndDay;
EndTime = EndTime.replace(/-/g, "/");
EndTime = new Date(EndTime); // 一天有多少毫秒
var dOfMs = (24 * 60 * 60 * 1000);
// time1 距离起始日期多少天
var diff1 = (StartTime.getTime() );
// time2 距离起始日期多少天
var diff2 = (EndTime.getTime() ); var diff3 = (MinStartTime.getTime() );
// 计算差值
var MaxdiffDay=parseInt(diff2 - diff3) / dOfMs; var diffDay = parseInt(diff2 - diff1) / dOfMs;
diffDay = diffDay>0 ? diffDay : StartYear-1+"年度年报征集已于6月30日结束";
$("#t").html(diffDay)
var r=130, range = diffDay ;
draw(range,r,MaxdiffDay) });
function draw(range,r,MaxdiffDay) {
var circle = document.querySelectorAll("circle")[1];//获取svg中的circle
if (circle) {
var percent = range / MaxdiffDay, perimeter = Math.PI * 2 * r;
circle.setAttribute('stroke-dasharray', perimeter * percent + " " + perimeter * (1- percent));
}
}

基于svg的环形进度条的更多相关文章

  1. 用svg实现一个环形进度条

    svg实现环形进度条需要用到的知识: 1.会使用path的d属性画一个圆环 //用svg的path元素的A命令画圆 <path d=" M cx cy m 0 -r a r r 0 1 ...

  2. 环形进度条的实现方法总结和动态时钟绘制(CSS3、SVG、Canvas)

    缘由: 在某一个游戏公司的笔试中,最后一道大题是,“用CSS3实现根据动态显示时间和环形进度[效果如下图所示],且每个圆环的颜色不一样,不需要考虑IE6~8的兼容性”.当时第一想法是用SVG,因为SV ...

  3. 【css】如何实现环形进度条

    最近团队的童鞋接到了一个有关环形进度条的需求,想要还原一个native的沿环轨迹渐变进度条的效果,看到这个效果的时候,笔者陷入了沉思.. 环形进度条的效果,最先想到的就是使用CSS利用两个半圆的hac ...

  4. 类似 Dribbble 下载按钮的 SVG 弹性动画进度条

    Codrops 发布了一个如何创建一个基于弹性效果的 SVG 加载进度条教程,基于 SVG 和 TweenMax 实现.按钮开始的时候是一个带有箭头的图标,一旦它被点击,动画成一个有趣的小金属丝和一个 ...

  5. 图解CSS3制作圆环形进度条的实例教程

    圆环形进度条制作的基本思想还是画出基本的弧线图形,然后CSS3中我们可以控制其旋转来串联基本图形,制造出部分消失的效果,下面就来带大家学习图解CSS3制作圆环形进度条的实例教程 首先,当有人说你能不能 ...

  6. iOS带动画的环形进度条(进度条和数字同步)

    本篇写的是实现环形进度条,并带动画效果,要实现这些,仅能通过自己画一个 方法直接看代码 为了方便多次调用,用继承UIView的方式 .m文件 #import <UIKit/UIKit.h> ...

  7. iOS 开发技巧-制作环形进度条

    有几篇博客写到了怎么实现环形进度条,大多是使用Core Graph来实现,实现比较麻烦且效率略低,只是一个小小的进度条而已,我们当然是用最简单而且效率高的方式来实现. 先看一下这篇博客,博客地址:ht ...

  8. iOS一分钟学会环形进度条

    有几篇博客写到了怎么实现环形进度条,大多是使用Core Graph来实现,实现比较麻烦且效率略低,只是一个小小的进度条而已,我们当然是用最简单而且效率高的方式来实现.先看一下这篇博客,博客地址:htt ...

  9. Swift - 环形进度条(UIActivityIndicatorView)的用法

    Swift中,除了条形进度条外,还有环形进度条,效果图如下: 1,环形进度条的基本属性 (1)Style: Large White:比较大的白色环形进度条 White:白色环形进度条 Gray:灰色环 ...

随机推荐

  1. Brainman(规律题)【数学思想】

    Brainman 题目链接(点击) Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12942   Accepted: 650 ...

  2. TCP 重置攻击的工作原理

    原文链接:https://fuckcloudnative.io/posts/deploy-k3s-cross-public-cloud/ TCP 重置攻击 是使用一个单一的数据包来执行的,只有几个字节 ...

  3. RedHat服务器安装

    为什么选择 RedHat 市场占有率商业化比较高 厂商的支持比较丰富 新手建议ubuntu 进行上手 等熟悉了Linux环境可以选择自己喜欢的发行版 (有些Geeker就是认为Ubuntu太易于使用了 ...

  4. 多页面共用sessionStorage的实现(转载)

    sessionStorage的局限: sessionStorage是页面级别的,仅在一个标签页生效,如果同一个浏览器同时打开多个标签页,且都访问同一个域名,sessionStorage是不会在这多个标 ...

  5. spring boot actuator端点高级进阶metris指标详解、git配置详解、自定义扩展详解

    https://www.cnblogs.com/duanxz/p/3508267.html 前言 接着上一篇<Springboot Actuator之一:执行器Actuator入门介绍>a ...

  6. C++的逗号运算符

    逗号运算符( , )是C++语言运算符中优先级最低的一种运算符,结合顺序是从左至右,用来顺序求值(最后一个逗号后面表达式的值作为整个表达式的值). 感觉这个东西还是挺冷门的,之前都不知道,平时也比较少 ...

  7. SQL注入之报错注入常见函数

  8. yqq命令

    用 apt-get install 安装时 ,会有一个提问,问是否继续,需要输入 yes.使用 yqq 的话,就没有这个提问了,自动 yes . 例如下面的更新和安装nginx: apt-get -y ...

  9. js基础练习题(2)

    5.函数 1.按要求封装两个函数 1.封装一个函数,要求输入字符串转化成数组弹出 2.封装一个函数,要求能求出三个数中的最小值,注意:不准使用js内置函数 2.封装一个函数,求参数的和,注意:参数不固 ...

  10. C#/VB.NET 在PDF中添加文件包(Portfolio)

    PDF文件包(Portfolio)允许用户将多种不同类型的文件如Word.Excel.PDF.PowerPoint和图片等集合到一个PDF文件中,用户可以打开.更改PDF文件包中的单个文件.添加文件包 ...