騰訊雲技術社區-掘金主頁持續爲你們呈現雲計算技術文章,歡迎你們關注!javascript
做者:梁偉盛html
聽說本貴族圈每個月不分享就邀請雪糕。。。因此分享下一個簡單的Canvas插件
Canvas元素是HTML5的一部分,容許腳本語言動態渲染位圖像,你能夠使用javascript用它來繪製圖形、圖標、以及其它任何視覺性圖像。它也可用於建立圖片特效和動畫。(反正就是好東西)
既然是HTML5的特性,那必須是隻有支持HTML5的瀏覽器才能使用,兼容性以下圖:java
定義:開始一條路徑,或重置當前的路徑。github
context.beginPath();複製代碼
定義:建立弧/曲線(用於建立圓或部分圓)。web
context.arc(x, y , r, sAngle, eAngle, counterclockwise);複製代碼
定義:繪製當前路徑的邊框正則表達式
context.stroke()複製代碼
context.measureText(text).width;複製代碼
定義:返回包含一個對象,該對象包含以像素計的指定字體寬度。canvas
定義:在畫布上繪製填色的文本api
context.fillText(text, x, y, maxWidth);複製代碼
定義:清空給定矩形內的指定像素。瀏覽器
context.clearRect(x, y, width, height);複製代碼
瞭解了以上API後,咱們就能夠動手幹活了,其實很簡單。實現只有3個步驟。
context.beginPath();
//設置透明度,樣式與線條寬度
this.extend(context, {
globalAlpha: inSideCircle.alpha,
strokeStyle: inSideCircle.style,
lineWidth: inSideCircle.lineWidth
})
//繪製圓
context.arc(this.hElWidth, this.hElHeight, option.radius + outSideCircle.lineWidth - inSideCircle.lineWidth, 0, pi * 2, false);
//畫出圓形
context.stroke();複製代碼
context.beginPath();
//設置透明度,樣式與線條寬度
this.extend(context, {
globalAlpha: outSideCircle.alpha,
strokeStyle: outSideCircle.style,
lineWidth: outSideCircle.lineWidth
})
//根據當前進度繪製圓
context.arc(this.hElWidth, this.hElHeight, option.radius, -(pi / 2), pi * 2 / 100 * (n - 25), false);
//畫出圓形
context.stroke();複製代碼
context.beginPath();
this.extend(context, {
font: textObj.font,
fillStyle: textObj.style,
globalAlpha: textObj.alpha
})
//得出數值寬度
numberWidth = context.measureText(number).width;
context.fillText(number, this.hElWidth - numberWidth / 2, this.hElHeight + 10 / 3)複製代碼
#####最後暴露出setProgress設置進度函數給外部調用便可
//清除canvas內容
this.context.clearRect(0, 0, this.elWidth, this.elHeight);
this._drawCircle(n);
this._drawText(n);複製代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no, minimal-ui" />
<meta content="yes"name="apple-mobile-web-app-capable"/>
<meta content="black"name="apple-mobile-web-app-status-bar-style"/>
<meta name="format-detection"content="telphone=no"/>
<title>canvasProgress</title>
</head>
<body>
<canvas id="canvasEl" style="background-color:#000" height="100px" width="100px"></canvas>
</body>
<script type="text/javascript" src="progress.js"></script>
<script type="text/javascript">
var progress = new Progress({element: document.getElementById('canvasEl')})
var n = 0;
var timer = setInterval(function() {
if (n++ !== 100) {
progress.setProgress(n);
} else {
clearInterval(timer);
}
}, 100)
</script>
</html>複製代碼
背景與進度顏色根據喜愛變換
今天分享就到此位置了,有興趣的能夠去github看下代碼。
相關推薦
講講標準的Promise長啥樣?
玩轉JavaScript正則表達式
騰訊存儲與CDN免費體驗