国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用canvas 寫出滴滴進度條效果

hersion / 420人閱讀

摘要:最近學了點,做了個滴滴的進度條效果,由于本人未使用過滴滴,所以不太清楚該具體效果以及該頁面是怎樣的。這樣就有進度條的效果了。進度條圓的厚邊框,自行設置方法將繪圖狀態置為保存值。

最近學了點canvas,做了個滴滴的進度條效果,由于本人未使用過滴滴,所以不太清楚該具體效果以及該頁面是怎樣的。yy出了以下效果:

先從簡單的圓開始吧!

代碼:

let c = document.getElementById("myCanvas")
// getContext() 方法返回一個用于在畫布上繪圖的環境。
let ctx = c.getContext("2d")
// 起始一條路徑,或重置當前路徑
ctx.beginPath()
// 創建弧/曲線(用于創建圓形或部分圓)
ctx.arc(100, 75, 50, 0, 2*Math.PI)
// 繪制已定義的路徑
ctx.stroke()

這里貼出arc()函數說明:

context.arc(x,y,r,sAngle,eAngle,counterclockwise);

有興趣的同學可以進入鏈接查看更多屬性和方法: http://caibaojian.com/html5-c...

接下來我們繪制圓環以及動畫:

let canvas = document.getElementById("myCanvas"),
    context = canvas.getContext("2d"),
    cirX = canvas.width/2,
    cirY = canvas.height/2,
    rad = Math.PI*2/100,
    n = 0,
    r = 45;

繪制圖形并生成動畫:

function DreamLoading() {
  // clearRect() 方法清空給定矩形內的指定像素。
  context.clearRect(0,0,canvas.width,canvas.height);
  writeCircle();
  writeText(n);
  writeOrange(n);
  if(n < 100) {
    n = n + 0.1
  } else {
    n = 100;
  }
  window.requestAnimationFrame(DreamLoading);
}

當我們寫window.requestAnimationFrame(回調函數)時,瀏覽器會在下次重繪前執行回調函數。這樣就有進度條的效果了。

畫圓:

function writeCircle() {
  // 畫個圓
  // save() 方法把當前狀態的一份拷貝壓入到一個保存圖像狀態的棧中。這就允許您臨時地改變圖像狀態,然后,通過調用 restore() 來恢復以前的值。
  context.save();
  context.beginPath();
  context.strokeStyle = "#FF8C00";
  context.arc(cirX,cirY,r,0,Math.PI*2,false);
  context.stroke();
  context.restore();
}

進度條:圓的厚邊框,lineWidth自行設置

function writeOrange(n) {
  context.save();
  context.strokeStyle = "#FF8C00";
  context.lineWidth = 3;
  context.beginPath();
  context.arc(cirX,cirY,r,-Math.PI/2,-Math.PI/2+rad*n,false);
  context.stroke();
  // restore() 方法將繪圖狀態置為保存值。
  context.restore();
}

文本,百分比效果:

function writeText(n) {
  context.save();
  context.strokeStyle = "#FF8C00";
  context.font = "20px Arail";
  context.strokeText(n.toFixed() + "%", cirX-30,cirY+10);
  context.stroke();
  context.restore();
}

百分比進度條效果全部代碼:











倒計時效果代碼:

let minute = 1
      const Time = minute*60
      let second = 0
      render(minute, second)
      const interval = setInterval(() => {
        if (second < 60) {
          second--
          if (second < 0) {
            second = 59
            minute--
          }
        }
        if(minute == 0 && second == 0) {
            clearInterval(interval)
        }
        render(minute, second)
      },1000)

      function render(minute, second) {
        if (minute < 10) {
          document.querySelector(".minute").innerText = "0" + minute;
        } else {
          document.querySelector(".minute").innerText = minute;
        }
        if (second < 10) {
          document.querySelector(".second").innerText = "0" + second;
        } else {
          document.querySelector(".second").innerText = second;
        }
      }

完整代碼:

   


  
  
  
  Document
  


  
派單中
取消訂單
系統選擇司機

:

秒倒計時

不夠精確,在計算的時候有些錯誤。希望同學們能一起解決。謝謝!

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/50782.html

相關文章

  • 滴滴一下,小程序專車來了

    摘要:功能三滴滴費用計算古人云細節決定成敗,一個良好的微信小程序往往就是一些細節打動人心,居然是模仿,雖做不到百分百,至少還是很希望一模一樣。 最近時常感嘆道:時間總是那么的快,轉瞬即逝。對于像我這種剛入門的小生來講,技術每天都在更新,框架也層出不窮,有時候還沒弄懂這個知識大牛們又推出了更好的技術。當然學習好的技術也是十分重要的。但是在學習之后怎樣才能夠得到自己想要的呢,一個好的建議便是靜...

    SwordFly 評論0 收藏0
  • Vue2.0 仿滴滴出行項目

    摘要:仿滴滴出行項目最近,各大社區出現很多小伙伴的項目,趁著這股熱潮我也用擼了一個滴滴出行的項目。可是,后來在手機上發現,輸入的時候居然調不出軟鍵盤,寫項目的時候沒考慮到設備問題,簡直是大大的失誤。也就是說可以在組件內部進行請求,不需要提交。 Vue2.0 仿滴滴出行項目 最近,各大社區出現很多小伙伴的vue項目,趁著這股熱潮我也用vue擼了一個滴滴出行的項目。 效果預覽 showImg(h...

    ShevaKuilin 評論0 收藏0
  • 從無到有打造一個炫酷的進度效果

    摘要:今天這篇文章要介紹的是一個酷炫的進度條的設計和實現,在進度的文字內容顏色以及切換的圖片等都可以自由設置。那么下面我們就開始從無到有實現一下這個酷炫的進度效果吧。三利用與來實現進度效果。四利用阻尼動畫實現進度條回彈效果。 showImg(/img/remote/1460000006465670); 今天這篇文章要介紹的是一個酷炫的進度條的設計和實現,在進度的文字內容、顏色以及切換的圖片等...

    pekonchan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<