詳解利用canvas實(shí)現(xiàn)環(huán)形進(jìn)度條的方法
前提:有時(shí)候在項(xiàng)目中會(huì)有用到進(jìn)度條的情況,使用css3也可以實(shí)現(xiàn),但是對(duì)于性能不好的設(shè)備,或者網(wǎng)絡(luò)不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用canvas來(lái)實(shí)現(xiàn)的方法。
效果圖

DOM中,首先定義canvas畫(huà)板元素:
<canvas id="canvas" width="500" height="500" style="background:#F7F7F7;">
<p>you browser not support canvas!</p>
</canvas>
對(duì)于不支持canvas的瀏覽器則會(huì)顯示:you browser not support canvas!
接下來(lái)是js編寫(xiě):
定義canvas.js并在頁(yè)面引入
var canvas = document.getElementById('canvas'), //獲取canvas元素
context = canvas.getContext('2d'), //獲取畫(huà)圖環(huán)境,指明為2d
centerX = canvas.width / 2, //Canvas中心點(diǎn)x軸坐標(biāo)
centerY = canvas.height / 2, //Canvas中心點(diǎn)y軸坐標(biāo)
rad = Math.PI * 2 / 100, //將360度分成100份,那么每一份就是rad度
speed = 0.1; //加載的快慢就靠它了
//繪制藍(lán)色外圈
function blueCircle(n) {
context.save();
context.beginPath();
context.strokeStyle = "#49f";
context.lineWidth = 12;
context.arc(centerX, centerY, 100, -Math.PI / 2, -Math.PI / 2 + n * rad, false);
context.stroke();
context.restore();
}
//繪制白色外圈
function whiteCircle() {
context.save();
context.beginPath();
context.strokeStyle = "#A5DEF1";
context.lineWidth = 12;
context.arc(centerX, centerY, 100, 0, Math.PI * 2, false);
context.stroke();
context.closePath();
context.restore();
}
//百分比文字繪制
function text(n) {
context.save();
context.fillStyle = "#F47C7C";
context.font = "40px Arial";
context.textAlign = "center";
context.textBaseline = "middle";
context.fillText(n.toFixed(0) + "%", centerX, centerY);
context.restore();
}
//動(dòng)畫(huà)循環(huán)
(function drawFrame() {
window.requestAnimationFrame(drawFrame, canvas);
context.clearRect(0, 0, canvas.width, canvas.height);
whiteCircle();
text(speed);
blueCircle(speed);
if (speed > 100) speed = 0;
speed += 0.1;
}());
window.requestAnimationFrame(drawFrame, canvas);
每行代碼的注釋標(biāo)注非常清楚,如果還有不理解的可以去看canvas基礎(chǔ),應(yīng)該就可以了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章

canvas實(shí)現(xiàn)圓形進(jìn)度條動(dòng)畫(huà)的示例代碼
這篇文章主要介紹了canvas實(shí)現(xiàn)圓形進(jìn)度條動(dòng)畫(huà)的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-26
HTML5 Canvas 實(shí)現(xiàn)圓形進(jìn)度條并顯示數(shù)字百分比效果示例
本篇文章主要介紹了HTML5 Canvas 實(shí)現(xiàn)圓形進(jìn)度條并顯示數(shù)字百分比效果示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-18
HTML5 Canvas玩轉(zhuǎn)酷炫大波浪進(jìn)度圖效果實(shí)例(附demo)
本篇文章主要介紹了HTML5 Canvas玩轉(zhuǎn)酷炫大波浪進(jìn)度圖效果實(shí)例,非常具有使用價(jià)值,有需要的可以了解一下。2016-12-14




