成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

利用canvas實現(xiàn)環(huán)形進度條

zombieda / 2659人閱讀

摘要:前提有時候在項目中會有用到進度條的情況,使用也可以實現(xiàn),但是對于性能不好的設備,或者網(wǎng)絡不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用來實現(xiàn)的方法。

前提:有時候在項目中會有用到進度條的情況,使用css3也可以實現(xiàn),但是對于性能不好的設備,或者網(wǎng)絡不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用canvas來實現(xiàn)的方法。

效果圖:

DOM中,首先定義canvas畫板元素:


    

you browser not support canvas!

對于不支持canvas的瀏覽器則會顯示:you browser not support canvas!

接下來是js編寫:
定義canvas.js并在頁面引入

var canvas = document.getElementById("canvas"), //獲取canvas元素
  context = canvas.getContext("2d"), //獲取畫圖環(huán)境,指明為2d
  centerX = canvas.width / 2, //Canvas中心點x軸坐標
  centerY = canvas.height / 2, //Canvas中心點y軸坐標
  rad = Math.PI * 2 / 100, //將360度分成100份,那么每一份就是rad度
  speed = 0.1; //加載的快慢就靠它了

//繪制藍色外圈
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();
}

//動畫循環(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);

每行代碼的注釋標注非常清楚,如果還有不理解的可以去看canvas基礎,應該就可以了。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/114805.html

相關文章

  • 利用canvas實現(xiàn)環(huán)形進度

    摘要:前提有時候在項目中會有用到進度條的情況,使用也可以實現(xiàn),但是對于性能不好的設備,或者網(wǎng)絡不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用來實現(xiàn)的方法。 前提:有時候在項目中會有用到進度條的情況,使用css3也可以實現(xiàn),但是對于性能不好的設備,或者網(wǎng)絡不好的情況下,卡頓現(xiàn)象非常明顯,避免出現(xiàn)不流暢的尷尬情況,所以記錄一下,使用canvas來實現(xiàn)的方法。 效果圖...

    Terry_Tai 評論0 收藏0
  • 實現(xiàn)環(huán)形進度的幾種方法

    摘要:環(huán)形進度條的問題,網(wǎng)上有很多的,也有各種不同的實現(xiàn)方式,很棒的實現(xiàn)也有很多,我這自己做一下一方面是想開闊一下自己的思路,一方面好久沒看和的東西了,基礎的拿來熟悉下。 環(huán)形進度條的問題,網(wǎng)上有很多的demo,也有各種不同的實現(xiàn)方式,很棒的實現(xiàn)也有很多,我這自己做一下一方面是想開闊一下自己的思路,一方面好久沒看SVG和Canvas的東西了,基礎的拿來熟悉下。 DIV + CSS3 這個是最...

    Scliang 評論0 收藏0
  • 通過獲取異步加載JS文件進度實現(xiàn)一個canvas環(huán)形loading圖

    摘要:整理下思路,要獲取異步加載文件的進度要怎么做答將需要異步載入的文件放進一個數(shù)組中。通過獲取是否加載完畢怎么繪制一個動態(tài)的環(huán)形加載圖答需要用到的核心有。 1.整理下思路,要獲取異步加載JS文件的進度要怎么做? 答:將需要異步載入的文件放進一個數(shù)組中。如下。 const scriptArr = [./test_1.js, ./test_3.js, ./test_4.js, ./test_5...

    wendux 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<