JavaScript canvas繪制圓形加載進度條
本文實例為大家分享了JavaScript canvas繪制圓形加載進度條的具體代碼,供大家參考,具體內(nèi)容如下
1.需求:通過canvas繪制一個圓形的進度條
2.實現(xiàn)思路:
2.1 繪制灰色底框
2.2 創(chuàng)建變量保存結(jié)束角度值和加載進度值
2.3 創(chuàng)建定時繪制進度條
2.3.1 修改結(jié)束角度
2.3.2 開始新路徑繪制
2.3.3 繪制加載圓環(huán)
3.實現(xiàn)過程如下:
css樣式設置
body { ? ? ? ? ? ? text-align: center; ? ? ? ? } ? ? ? ? canvas { ? ? ? ? ? ? background: #ffffff; ? ? ? ? }
4.html如下:
<canvas id="circle" width="500" height="400"></canvas>
5.js實現(xiàn)如下:
var circle = document.getElementById("circle"); ? ? ? ? var ctx = circle.getContext("2d"); ? ? ? ? //結(jié)束角度 ? ? ? ? var end = -90; ? ? ? ? // 創(chuàng)建變量,進度值1% ? ? ? ? var load = 0; ? ? ? ? // 創(chuàng)建定時器,繪制進度條 ? ? ? ? var timer = setInterval(function () { ? ? ? ? ? ? //每次加載前清除畫布 ? ? ? ? ? ? ctx.clearRect(0, 0, 500, 400); ? ? ? ? ? ? ctx.beginPath(); ? ? ? ? ? ? // 灰色底框 ? ? ? ? ? ? ctx.strokeStyle = "#eee"; //底框的背景顏色 ? ? ? ? ? ? ctx.lineWidth = 10; //底框的寬度 ? ? ? ? ? ? //底框顯示的位置想x,y,r,start,end ? ? ? ? ? ? ctx.arc(250, 200, 100, 0, 2 * Math.PI); ? ? ? ? ? ? ? ctx.stroke(); //繪制底框,空心圓 ? ? ? ? ? ? // 修改結(jié)束角度 ? ? ? ? ? ? end += 3.6; ? ? ? ? ? ? // 開始新的路徑 ? ? ? ? ? ? ctx.beginPath(); ? ? ? ? ? ? // 繪制新的圓環(huán) ? ? ? ? ? ? ctx.strokeStyle = "lightgreen"; ? ? ? ? ? ? ctx.lineWidth = 10; ? ? ? ? ? ? //從頂點位置開始 ? ? ? ? ? ? ctx.arc(250, 200, 100, -90 * Math.PI / 180, end * Math.PI / 180); ? ? ? ? ? ? ctx.stroke(); ? ? ? ? ? ? // 設置中間的文字字體和大小 ? ? ? ? ? ? ctx.font = "18px SimHei"; ? ? ? ? ? ? load++; ? ? ? ? ? ? // 設置圖形文字 ? ? ? ? ? ? ctx.fillText("已加載完成:" + load + "%", 180, 208); ? ? ? ? ? ? if (load == 100) { ? ? ? ? ? ? ? ? clearInterval(timer); ? ? ? ? ? ? } ? ? ? ? }, 200);
6.實現(xiàn)效果如下:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
JS Html轉(zhuǎn)義和反轉(zhuǎn)義(html編碼和解碼)的實現(xiàn)與使用方法總結(jié)
這篇文章主要介紹了JS Html轉(zhuǎn)義和反轉(zhuǎn)義(html編碼和解碼)的實現(xiàn)與使用方法,結(jié)合實例形式總結(jié)分析了JS Html轉(zhuǎn)義和反轉(zhuǎn)義、html編碼和解碼相關封裝類定義與具體使用技巧,需要的朋友可以參考下2020-03-03淺談JavaScript窗體Window.ShowModalDialog使用
這篇文章主要介紹了淺談JavaScript窗體Window.ShowModalDialog使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07JavaScript判斷一個變量是否是數(shù)組的五種方式總結(jié)
在 JavaScript 編程中,我們經(jīng)常需要對不同類型的變量進行判斷和處理,其中,判斷一個變量是否是數(shù)組是一項基本且常見的任務,在本篇博客中,我們將介紹幾種常用的方式來判斷一個變量是否是數(shù)組,并探討它們的優(yōu)缺點以及適用場景,需要的朋友可以參考下2023-11-11php實例分享之實現(xiàn)顯示網(wǎng)站運行時間
這篇文章主要介紹了php實現(xiàn)顯示網(wǎng)站運行時間,需要的朋友可以參考下2014-05-05window.showModalDialog參數(shù)傳遞中含有特殊字符的處理方法
程序運行出錯經(jīng),過檢查發(fā)現(xiàn)傳遞的數(shù)據(jù)中出現(xiàn)了#等特殊字符,瀏覽器只取到#號前面的數(shù)據(jù),后面的被截斷,下面為大家介紹下正確的處理方法2013-06-06js遍歷詳解(forEach, map, for, for...in, for...of)
在本篇文章里小編給大家整理的是關于js中的各種遍歷(forEach, map, for, for...in, for...of)相關知識點用法總結(jié),需要的朋友們參考下。2019-08-08IE與firefox下Dhtml的一些區(qū)別小結(jié)
IE與Mozilla下Dhtml的一些區(qū)別小結(jié)2009-12-12