基于基于 D3.js 绘制动态进度条的实例详解绘制动态进度条的实例详解
D3 是什么是什么
D3 的全称是(Data-Driven Documents),顾名思义可以知道是一个被数据驱动的文档。听名字有点抽象,说简单一点,其
实就是一个 JavaScript 的函数库,使用它主要是用来做数据可视化的。如果你不知道什么是 JavaScript ,请先学习一下
JavaScript,推荐阮一峰老师的教程。
JavaScript 文件的后缀名通常为 .js,故 D3 也常使用 D3.js 称呼。D3 提供了各种简单易用的函数,大大简化了 JavaScript 操
作数据的难度。由于它本质上是 JavaScript ,所以用 JavaScript 也是可以实现所有功能的,但它能大大减小你的工作量,尤
其是在数据可视化方面,D3 已经将生成可视化的复杂步骤精简到了几个简单的函数,你只需要输入几个简单的数据,就能够
转换为各种绚丽的图形。有过 JavaScript 基础的朋友一定很容易理解它。
在网站页面加载以及表单提交时,常使用进度条表达加载过程来优化用户体验,常见的进度条有矩形进度条和圆形进度条,如
下图所示:
我们经常使用svg或canvas来实现动态图形的绘制,但绘制过程相对较繁琐。对于直观漂亮的进度条,社区也有提供成熟的方
案例如highcharts/ECharts等等,但基于配置的开发方式终究无法实现100%的自定义绘制。本文将带你使用D3.js从零一步一
步实现动态进度条,并分享代码逻辑原理。
基础要求基础要求
了解svg如何绘制基础图形
了解D3.js v4版本
了解如何使用D3.js (v4)绘制svg的基础图形
绘制圆形进度条绘制圆形进度条
对于一个圆形进度条,我们先对其进行任务拆分:
绘制嵌套圆弧
圆心处的实时数据展示
展现动画
美化
1.绘制嵌套圆弧绘制嵌套圆弧
对于圆形,svg提供现成的 circle 标签供使用,但是其劣势在于,对于圆形进度条使用 circle 可以满足,但对图形进一步扩展
时比如绘制半圆, circle 的处理就棘手了。D3.js提供 arc 相关API对圆形的绘制方法进行了封装: