摘要:前提有時(shí)候在項(xiàng)目中會(huì)有用到進(jìn)度條的情況,使用也可以實(shí)現(xiàn),但是對(duì)于性能不好的設(shè)備,或者網(wǎng)絡(luò)不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用來(lái)實(shí)現(xià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à)板元素:
對(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)該就可以了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/114805.html
摘要:前提有時(shí)候在項(xiàng)目中會(huì)有用到進(jìn)度條的情況,使用也可以實(shí)現(xiàn),但是對(duì)于性能不好的設(shè)備,或者網(wǎng)絡(luò)不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用來(lái)實(shí)現(xià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)的方法。 效果圖...
摘要:環(huán)形進(jìn)度條的問(wèn)題,網(wǎng)上有很多的,也有各種不同的實(shí)現(xiàn)方式,很棒的實(shí)現(xiàn)也有很多,我這自己做一下一方面是想開(kāi)闊一下自己的思路,一方面好久沒(méi)看和的東西了,基礎(chǔ)的拿來(lái)熟悉下。 環(huán)形進(jìn)度條的問(wèn)題,網(wǎng)上有很多的demo,也有各種不同的實(shí)現(xiàn)方式,很棒的實(shí)現(xiàn)也有很多,我這自己做一下一方面是想開(kāi)闊一下自己的思路,一方面好久沒(méi)看SVG和Canvas的東西了,基礎(chǔ)的拿來(lái)熟悉下。 DIV + CSS3 這個(gè)是最...
摘要:整理下思路,要獲取異步加載文件的進(jìn)度要怎么做答將需要異步載入的文件放進(jìn)一個(gè)數(shù)組中。通過(guò)獲取是否加載完畢怎么繪制一個(gè)動(dòng)態(tài)的環(huán)形加載圖答需要用到的核心有。 1.整理下思路,要獲取異步加載JS文件的進(jìn)度要怎么做? 答:將需要異步載入的文件放進(jìn)一個(gè)數(shù)組中。如下。 const scriptArr = [./test_1.js, ./test_3.js, ./test_4.js, ./test_5...
閱讀 2814·2021-11-16 11:44
閱讀 978·2021-10-09 09:58
閱讀 4503·2021-09-24 09:48
閱讀 4358·2021-09-23 11:56
閱讀 2415·2021-09-22 15:48
閱讀 1902·2021-09-07 10:07
閱讀 3213·2021-08-31 09:46
閱讀 514·2019-08-30 15:56