H5的Canvas做出圆形进度条并显示数字百分比


本文摘自PHP中文网,作者php中世界最好的语言,侵删。

这次给大家带来H5的Canvas做出圆形进度条并显示数字百分比,Canvas做出圆形进度条并显示数字百分比的注意事项有哪些,下面就是实战案例,一起来看一下。

本文介绍了HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例,具体如下:

实现效果

1.首先创建html代码

1

<canvas id="canvas" width="500" height="500" style="background:#000;"></canvas>

2.创建canvas环境

1

2

3

4

5

6

var canvas = document.getElementById('canvas'),  //获取canvas元素

            context = canvas.getContext('2d'),  //获取画图环境,指明为2d

            centerX = canvas.width/2,   //Canvas中心点x轴坐标

            centerY = canvas.height/2,  //Canvas中心点y轴坐标

            rad = Math.PI*2/100, //将360度分成100份,那么每一份就是rad度

            speed = 0.1; //加载的快慢就靠它了

3.绘制5像素宽的运动外圈

1

2

3

4

5

6

7

8

9

10

11

//绘制5像素宽的运动外圈

        function blueCircle(n){

            context.save();

            context.strokeStyle = "#fff"; //设置描边样式

            context.lineWidth = 5; //设置线宽

            context.beginPath(); //路径开始

            context.arc(centerX, centerY, 100 , -Math.PI/2, -Math.PI/2 +n*rad, false); //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)

            context.stroke(); //绘制

            context.closePath(); //路径结束

            context.restore();

        }

4.绘制白色外圈

1

2

3

4

5

6

7

8

9

10

11

//绘制白色外圈

        function whiteCircle(){

            context.save();

            context.beginPath();

            context.lineWidth = 2; //设置线宽

            context.strokeStyle = "red";

            context.arc(centerX, centerY, 100 , 0, Math.PI*2, false);

            context.stroke();

            context.closePath();

            context.restore();

        }

5.百分比文字绘制

1

2

3

4

5

6

7

8

9

function text(n){

            context.save(); //save和restore可以保证样式属性只运用于该段canvas元素

            context.strokeStyle = "#fff"; //设置描边样式

            context.font = "40px Arial"; //设置字体大小和字体

            //绘制字体,并且指定位置

            context.strokeText(n.toFixed(0)+"%", centerX-25, centerY+10);

            context.stroke(); //执行绘制

            context.restore();

        }

6.让它运动起来

1

2

3

4

5

6

7

8

9

10

//动画循环

        (function drawFrame(){

            window.requestAnimationFrame(drawFrame);

            context.clearRect(0, 0, canvas.width, canvas.height);

            whiteCircle();

            text(speed);

            blueCircle(speed);

            if(speed > 100) speed = 0;

            speed += 0.1;

        }());

完整代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>HTML5 Canvas 圆形进度条并显示数字百分比</title>

<style>

*{margin:0;padding:0;}

body{text-align:center;background-color:#000;}

</style>

</head>

<body>

<canvas id="canvas" width="500" height="500" style="background:#000;"></canvas>

<script>

    window.onload = function(){

        var canvas = document.getElementById('canvas'),  //获取canvas元素

            context = canvas.getContext('2d'),  //获取画图环境,指明为2d

            centerX = canvas.width/2,   //Canvas中心点x轴坐标

            centerY = canvas.height/2,  //Canvas中心点y轴坐标

            rad = Math.PI*2/100, //将360度分成100份,那么每一份就是rad度

            speed = 0.1; //加载的快慢就靠它了

             

        //绘制5像素宽的运动外圈

        function blueCircle(n){

            context.save();

            context.strokeStyle = "#fff"; //设置描边样式

            context.lineWidth = 5; //设置线宽

            context.beginPath(); //路径开始

            context.arc(centerX, centerY, 100 , -Math.PI/2, -Math.PI/2 +n*rad, false); //用于绘制圆弧context.arc(x坐标,y坐标,半径,起始角度,终止角度,顺时针/逆时针)

            context.stroke(); //绘制

            context.closePath(); //路径结束

            context.restore();

        }

        //绘制白色外圈

        function whiteCircle(){

            context.save();

            context.beginPath();

            context.lineWidth = 2; //设置线宽

            context.strokeStyle = "red";

            context.arc(centerX, centerY, 100 , 0, Math.PI*2, false);

            context.stroke();

            context.closePath();

            context.restore();

        

        //百分比文字绘制

        function text(n){

            context.save(); //save和restore可以保证样式属性只运用于该段canvas元素

            context.strokeStyle = "#fff"; //设置描边样式

            context.font = "40px Arial"; //设置字体大小和字体

            //绘制字体,并且指定位置

            context.strokeText(n.toFixed(0)+"%", centerX-25, centerY+10);

            context.stroke(); //执行绘制

            context.restore();

        }

        //动画循环

        (function drawFrame(){

            window.requestAnimationFrame(drawFrame);

            context.clearRect(0, 0, canvas.width, canvas.height);

            whiteCircle();

            text(speed);

            blueCircle(speed);

            if(speed > 100) speed = 0;

            speed += 0.1;

        }());

    }

</script>

</body>

</html>

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

Canvas实现旋转风车的绘制

data-*与js的交互

以上就是H5的Canvas做出圆形进度条并显示数字百分比的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

html如何定义错误提示

利用html5以及canvas实现支持签名插件的方法

图文详解如何用canvas画实心圆和空心圆

html5程序员需要学习的技能总结

html5的发展

详解h5和html4的区别

html5规定元素是否可拖动的属性draggable

h5的移动端适配怎样实现

html5 canvas实现画未闭合的路径及渐变色的填充方法

h5的存储方式详解

更多相关阅读请进入《canvas》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...