成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

canvas實(shí)現(xiàn)圓弧、圓環(huán)進(jìn)度條的案例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹了canvas實(shí)現(xiàn)圓弧、圓環(huán)進(jìn)度條的案例分析,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

在金鳳等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作按需定制開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),金鳳網(wǎng)站建設(shè)費(fèi)用合理。

此方法通過(guò)canvas繪制圓形的方法來(lái)實(shí)現(xiàn)動(dòng)態(tài)圓環(huán)進(jìn)度條,直接上代碼,疑問(wèn)請(qǐng)看注釋:

HTML代碼如下, 在頁(yè)面里創(chuàng)建一個(gè)畫(huà)布即可:  

<canvas id="canvas" width="300" height="300">
    <p>抱歉,您的瀏覽器不支持canvas</p>
 </canvas>

JS分兩大部分,
第一部分實(shí)現(xiàn)整體功能,第二部分調(diào)用:
第一部分:
第一部分功能原理大概是,畫(huà)兩個(gè)圓,一個(gè)是底色圓,第二個(gè)是動(dòng)態(tài)加載的圓弧,進(jìn)度通過(guò)定時(shí)器加載;顏色加漸變色;

function toCanvas(id ,progress){                canvas進(jìn)度條
                var canvas = document.getElementById(id),
                ctx = canvas.getContext("2d"),
                percent = progress,  最終百分比                circleX = canvas.width / 2,  中心x坐標(biāo)                circleY = canvas.height / 2,  中心y坐標(biāo)                radius = 100, 圓環(huán)半徑                lineWidth = 5,  圓形線條的寬度                fontSize = 20; 字體大小
                 兩端圓點(diǎn)
                function smallcircle1(cx, cy, r) {
                    ctx.beginPath();                    //ctx.moveTo(cx + r, cy);                    ctx.lineWidth = 1;
                    ctx.fillStyle = '#06a8f3';
                    ctx.arc(cx, cy, r,0,Math.PI*2);
                    ctx.fill();
                }                 function smallcircle2(cx, cy, r) {
                     ctx.beginPath();                     //ctx.moveTo(cx + r, cy);                     ctx.lineWidth = 1;
                     ctx.fillStyle = '#00f8bb';
                     ctx.arc(cx, cy, r,0,Math.PI*2);
                     ctx.fill();
                 }                 畫(huà)圓
                 function circle(cx, cy, r) {
                     ctx.beginPath();                     //ctx.moveTo(cx + r, cy);                     ctx.lineWidth = lineWidth;
                     ctx.strokeStyle = '#eee';
                     ctx.arc(cx, cy, r, Math.PI*2/3, Math.PI * 1/3);
                     ctx.stroke();
                 }                 畫(huà)弧線
                 function sector(cx, cy, r, startAngle, endAngle, anti) {
                     ctx.beginPath();                     //ctx.moveTo(cx, cy + r); // 從圓形底部開(kāi)始畫(huà)                     ctx.lineWidth = lineWidth;                     // 漸變色 - 可自定義
                     var linGrad = ctx.createLinearGradient(
                         circleX-radius-lineWidth, circleY, circleX+radius+lineWidth, circleY
                     );
                     linGrad.addColorStop(0.0, '#06a8f3');                     //linGrad.addColorStop(0.5, '#9bc4eb');                     linGrad.addColorStop(1.0, '#00f8bb');
                     ctx.strokeStyle = linGrad;                      圓弧兩端的樣式                     ctx.lineCap = 'round';                     圓弧                     ctx.arc(
                         cx, cy, r,
                         (Math.PI*2/3),                         (Math.PI*2/3) + endAngle/100 * (Math.PI*5/3),
                         false
                     );
                     ctx.stroke();
                 }                  刷新
                 function loading() {                     if (process >= percent) {
                         clearInterval(circleLoading);
                     }                      清除canvas內(nèi)容                     ctx.clearRect(0, 0, circleX * 2, circleY * 2);                    中間的字                     ctx.font = fontSize + 'px April';
                     ctx.textAlign = 'center';
                     ctx.textBaseline = 'middle';
                     ctx.fillStyle = '#999';
                     ctx.fillText(parseFloat(process).toFixed(0) + '%', circleX, circleY);    
                  
                     圓形                     circle(circleX, circleY, radius);                     
                      圓弧                     sector(circleX, circleY, radius, Math.PI*2/3, process);
                     兩端圓點(diǎn)                     smallcircle1(150+Math.cos(2*Math.PI/360*120)*100, 150+Math.sin(2*Math.PI/360*120)*100, 5);
                     smallcircle2(150+Math.cos(2*Math.PI/360*(120+process*3))*100, 150+Math.sin(2*Math.PI/360*(120+process*3))*100, 5);                     控制結(jié)束時(shí)動(dòng)畫(huà)的速度
                     if (process / percent > 0.90) {
                         process += 0.30;
                     } else if (process / percent > 0.80) {
                         process += 0.55;
                     } else if (process / percent > 0.70) {
                         process += 0.75;
                     } else {
                         process += 1.0;
                     }
                 }                 var process = 0.0;  進(jìn)度
                 var circleLoading = window.setInterval(function () {
                     loading();
                 }, 20);
                     
            }
第二部分,調(diào)用封裝好的代碼:
            toCanvas('canvas',50);

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享canvas實(shí)現(xiàn)圓弧、圓環(huán)進(jìn)度條的案例分析內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)建站,關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián)建站,詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

文章標(biāo)題:canvas實(shí)現(xiàn)圓弧、圓環(huán)進(jìn)度條的案例分析-創(chuàng)新互聯(lián)
文章位置:http://jinyejixie.com/article36/dphhsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)外貿(mào)網(wǎng)站建設(shè)、微信小程序品牌網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
泗水县| 临夏市| 蓝田县| 马边| 水城县| 崇信县| 玉溪市| 弥勒县| 冷水江市| 襄樊市| 榆树市| 安阳县| 连江县| 华坪县| 休宁县| 长武县| 瓦房店市| 明星| 揭西县| 玛纳斯县| 忻城县| 鹿泉市| 长葛市| 沙湾县| 南平市| 祁阳县| 庄浪县| 日土县| 丁青县| 天峻县| 开远市| 古蔺县| 余干县| 六安市| 孝义市| 特克斯县| 岳普湖县| 云林县| 防城港市| 廉江市| 长海县|