HTML5 Canvas 實現(xiàn)圓形進度條并顯示數(shù)字百分比效果示例
發(fā)布時間:2017-08-18 17:17:12 作者:風雨后見彩虹
我要評論

本篇文章主要介紹了HTML5 Canvas 實現(xiàn)圓形進度條并顯示數(shù)字百分比效果示例,具有一定的參考價值,有興趣的可以了解一下
本文介紹了HTML5 Canvas 實現(xiàn)圓形進度條并顯示數(shù)字百分比效果示例,具體如下:
實現(xiàn)效果
1.首先創(chuàng)建html代碼
<canvas id="canvas" width="500" height="500" style="background:#000;"></canvas>
2.創(chuàng)建canvas環(huán)境
var canvas = document.getElementById('canvas'), //獲取canvas元素 context = canvas.getContext('2d'), //獲取畫圖環(huán)境,指明為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像素寬的運動外圈
//繪制5像素寬的運動外圈 function blueCircle(n){ context.save(); context.strokeStyle = "#fff"; //設(shè)置描邊樣式 context.lineWidth = 5; //設(shè)置線寬 context.beginPath(); //路徑開始 context.arc(centerX, centerY, 100 , -Math.PI/2, -Math.PI/2 +n*rad, false); //用于繪制圓弧context.arc(x坐標,y坐標,半徑,起始角度,終止角度,順時針/逆時針) context.stroke(); //繪制 context.closePath(); //路徑結(jié)束 context.restore(); }
4.繪制白色外圈
//繪制白色外圈 function whiteCircle(){ context.save(); context.beginPath(); context.lineWidth = 2; //設(shè)置線寬 context.strokeStyle = "red"; context.arc(centerX, centerY, 100 , 0, Math.PI*2, false); context.stroke(); context.closePath(); context.restore(); }
5.百分比文字繪制
function text(n){ context.save(); //save和restore可以保證樣式屬性只運用于該段canvas元素 context.strokeStyle = "#fff"; //設(shè)置描邊樣式 context.font = "40px Arial"; //設(shè)置字體大小和字體 //繪制字體,并且指定位置 context.strokeText(n.toFixed(0)+"%", centerX-25, centerY+10); context.stroke(); //執(zhí)行繪制 context.restore(); }
6.讓它運動起來
//動畫循環(huán) (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; }());
完整代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>HTML5 Canvas 圓形進度條并顯示數(shù)字百分比</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'), //獲取畫圖環(huán)境,指明為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"; //設(shè)置描邊樣式 context.lineWidth = 5; //設(shè)置線寬 context.beginPath(); //路徑開始 context.arc(centerX, centerY, 100 , -Math.PI/2, -Math.PI/2 +n*rad, false); //用于繪制圓弧context.arc(x坐標,y坐標,半徑,起始角度,終止角度,順時針/逆時針) context.stroke(); //繪制 context.closePath(); //路徑結(jié)束 context.restore(); } //繪制白色外圈 function whiteCircle(){ context.save(); context.beginPath(); context.lineWidth = 2; //設(shè)置線寬 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"; //設(shè)置描邊樣式 context.font = "40px Arial"; //設(shè)置字體大小和字體 //繪制字體,并且指定位置 context.strokeText(n.toFixed(0)+"%", centerX-25, centerY+10); context.stroke(); //執(zhí)行繪制 context.restore(); } //動畫循環(huán) (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>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
- 這篇文章主要介紹了HTML5超炫酷粒子效果的進度條的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來2019-08-23
HTML5觸摸事件實現(xiàn)移動端簡易進度條的實現(xiàn)方法
這篇文章主要介紹了HTML5觸摸事件實現(xiàn)移動端簡易進度條的實現(xiàn)方法的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-04- 本文給大家介紹了HTML5實現(xiàn)自帶進度條和滑塊滑桿效果,運用progress標簽,設(shè)置好min和max數(shù)值就好,可以用value獲取其中的進度值。具體實現(xiàn)代碼大家參考下本文2018-04-17
html5新增的定時器requestAnimationFrame實現(xiàn)進度條功能
html5為什么新增一個requestAnimationFrame,他的出現(xiàn)是為了解決什么問題?帶著這些問題跟隨腳本之家小編一起學習吧2018-12-13HTML5+CSS3網(wǎng)頁加載進度條的實現(xiàn),下載進度條的代碼實例
本篇文章主要介紹了HTML5+CSS3網(wǎng)頁加載進度條的實現(xiàn),下載進度條的代碼實例,具有一定的參考價值,有興趣的可以了解一下。2016-12-30HTML5 Canvas玩轉(zhuǎn)酷炫大波浪進度圖效果實例(附demo)
本篇文章主要介紹了HTML5 Canvas玩轉(zhuǎn)酷炫大波浪進度圖效果實例,非常具有使用價值,有需要的可以了解一下。2016-12-14使用Html5實現(xiàn)異步上傳文件,支持跨域,帶有上傳進度條
下面小編就為大家?guī)硪黄褂肏tml5實現(xiàn)異步上傳文件,支持跨域,帶有上傳進度條。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-17- 下面小編就為大家?guī)硪黄獪\談Html5中視頻 音頻標簽 進度條的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-07-26
- HTML5能夠用progress標簽直接向頁面添加進度條,這還是相當exciting的,不過各瀏覽器下的默認顯示效果會有差異,這里我們就來看看HTML5中的進度條progress元素簡介及兼容性處2016-06-02
- 下面小編就為大家分享一篇html5+css3進度條倒計時動畫特效代碼【推薦】。希望對大家有所幫助。一起跟隨小編過來看看吧2016-03-08