<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        基于JS實現帶動畫效果的流程進度條

        來源:懂視網 責編:小采 時間:2020-11-27 22:13:40
        文檔

        基于JS實現帶動畫效果的流程進度條

        基于JS實現帶動畫效果的流程進度條:當在使用流程的時候,比如有一個審核流程,有三個階段:開始,審核中,審核成功。當在不同的階段,做相應的進度顯示,當顯示時,是以動畫的形式顯示的。話不多說,我們開始打造吧。 首先,我考慮的是使用canvas來打造這個控件,于是我現在demo.html里新
        推薦度:
        導讀基于JS實現帶動畫效果的流程進度條:當在使用流程的時候,比如有一個審核流程,有三個階段:開始,審核中,審核成功。當在不同的階段,做相應的進度顯示,當顯示時,是以動畫的形式顯示的。話不多說,我們開始打造吧。 首先,我考慮的是使用canvas來打造這個控件,于是我現在demo.html里新

        當在使用流程的時候,比如有一個審核流程,有三個階段:開始,審核中,審核成功。當在不同的階段,做相應的進度顯示,當顯示時,是以動畫的形式顯示的。話不多說,我們開始打造吧。

            首先,我考慮的是使用canvas來打造這個控件,于是我現在demo.html里新建了一個canvas用來顯示測試用,并且先預計了幾個屬性值,在做的過程中增增改改,最終屬性如下:

        <canvas id="myCanvas" width="800" height="100" style="background:#efefef" data-show="開始|審核中|預審核|結束" data-font-size="16" 
         data-r="15" dara-progress="3" data-speed="20" data-fill-colour="#ffff00" data-padding="10"> 
         您的瀏覽器不支持 HTML5 canvas 標簽。</canvas> 

        然后開始編寫相應的js文件,我將其命名為ct_progress.js。我的目的是打造一款使用者可以自由配置的顯示控件,于是定義了一下可配置的屬性:

        var c=document.getElementById("myCanvas"); 
        var showStr = c.getAttribute("data-show"); 
        var showStrs = showStr.split("|"); 
        var r = c.hasAttribute("data-r")?Number(c.getAttribute("data-r")):15; 
        var ctx=c.getContext("2d"); 
        var padding = c.hasAttribute("data-padding")?Number(c.getAttribute("data-padding")):10;//左右上的間隔 
        var space = (c.getAttribute("width")-2*r-2*padding)/(showStrs.length-1); 
        var speed = c.hasAttribute("data-speed")?Number(c.getAttribute("data-speed")):20;//動畫速度 
        var fillColour = c.hasAttribute("data-fill-colour")?c.getAttribute("data-fill-colour"):"#ffff00";//填充色 
        var fontSize = c.hasAttribute("data-font-size")?Number(c.getAttribute("data-font-size")):15; 

        屬性完成,開始使用canvas使用這些屬性值開始進行初始化畫圖:

        for(var i in showStrs) 
        { 
         ctx.beginPath(); 
         ctx.fillStyle="#ffffff"; 
         ctx.arc(r+i*space+padding,r+padding,r,0,2*Math.PI);//前面兩個參數為圓心坐標,第三個為半徑,第四個為起始角。第五個為結束角 
         ctx.fill(); 
         if(i!=0) 
         { 
         ctx.fillRect(r+(i-1)*space+padding,r/2+padding,space,r);//前面兩個左上角坐標,后面兩個寬高 
         } 
         ctx.beginPath(); 
         ctx.fillStyle="#333333"; 
         ctx.font=fontSize+"px Georgia";//一定要指定字體否則大小沒有用 
         ctx.fillText(showStrs[i],r+i*space-r+padding,r*2+fontSize+10+padding);//左下角為起點 
         ctx.stroke(); 
        } 

        此時畫出了一個靜態的沒有進度的流程進度條。然后為這個進度條加上顯示時的動畫:

        var proW = 0;//進度長度 
        var progress = c.hasAttribute("dara-progress")?Number(c.getAttribute("dara-progress")):showStrs.length;// 
        var showW = space*progress;//計算應該顯示的進度長度 
        var i=0,j; 
        var int = setInterval(function () { 
         //清除 
         //ctx.clearRect(0, 0, c.width, c.height);//不清除在原圖上畫了覆蓋 
         j=i; 
         i = parseInt(proW/space); 
         if(i>j) 
         { 
         ctx.beginPath(); 
         ctx.fillStyle=fillColour; 
         ctx.fillRect(r+j*space+padding,r/2+padding,space,r);//前面兩個左上角坐標,后面兩個寬高 
         //clearArc(ctx,r+j*space+padding,r+padding,r,1);//清除圓部 
         } 
         else 
         { 
         if(i<progress) 
         { 
         ctx.beginPath(); 
         ctx.fillStyle=fillColour; 
         ctx.fillRect(r+i*space+padding,r/2+padding,proW-i*space,r);//前面兩個左上角坐標,后面兩個寬高 
         } 
         } 
         //clearArc(ctx,r+i*space+padding,r+padding,r,1);//清除圓部 
         ctx.beginPath(); 
         ctx.fillStyle=fillColour; 
         ctx.arc(r+i*space+padding,r+padding,r,0,2*Math.PI);//前面兩個參數為圓心坐標,第三個為半徑,第四個為起始角。第五個為結束角 
         ctx.fill(); 
         if(proW>=showW) 
         { 
         clearInterval(int); 
         } 
         proW+=speed; 
        }, 150); 

        這樣便完成了一個簡單的帶顯示動畫的流程進度條。最終效果如下:

        具體控件使用以及源碼,詳見github:點擊打開鏈接希望學習或有用到的童鞋star一下,感謝

        總結

        以上所述是小編給大家介紹的基于JS實現帶動畫效果的流程進度條,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        基于JS實現帶動畫效果的流程進度條

        基于JS實現帶動畫效果的流程進度條:當在使用流程的時候,比如有一個審核流程,有三個階段:開始,審核中,審核成功。當在不同的階段,做相應的進度顯示,當顯示時,是以動畫的形式顯示的。話不多說,我們開始打造吧。 首先,我考慮的是使用canvas來打造這個控件,于是我現在demo.html里新
        推薦度:
        標簽: 流程 動態 進度條
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 日韩精品人妻系列无码专区免费 | igao激情在线视频免费| 国产一精品一AV一免费孕妇| 亚洲二区在线视频| 99无码人妻一区二区三区免费| 亚洲熟妇无码爱v在线观看| 无码精品A∨在线观看免费| 亚洲一卡二卡三卡四卡无卡麻豆 | 日日夜夜精品免费视频| 久久亚洲精品无码网站| 亚洲国产天堂久久久久久| 一级特级aaaa毛片免费观看| 亚洲国产精品无码久久SM| 免费一级不卡毛片| 亚洲另类春色校园小说| 国产成人免费a在线视频app| 色多多A级毛片免费看| 国产亚洲精久久久久久无码| 最近2019免费中文字幕视频三| jlzzjlzz亚洲jzjzjz| 日本一道一区二区免费看| 男女拍拍拍免费视频网站| 久久亚洲美女精品国产精品 | 亚洲欧洲国产综合| 性色av免费观看| 一本岛v免费不卡一二三区| 亚洲AV成人无码久久精品老人| 免费可以看黄的视频s色| 亚洲av午夜国产精品无码中文字| 亚洲国产天堂久久综合| 午夜免费1000部| 在线观看亚洲专区| 亚洲AV无码国产在丝袜线观看 | 免费观看男人免费桶女人视频| 国产免费A∨在线播放| 亚洲人成网站日本片| 久久精品国产亚洲7777| 黄色成人免费网站| 精品无码一级毛片免费视频观看| 亚洲系列中文字幕| 亚洲伊人久久综合中文成人网|