:
秒倒計時
摘要:最近學了點,做了個滴滴的進度條效果,由于本人未使用過滴滴,所以不太清楚該具體效果以及該頁面是怎樣的。這樣就有進度條的效果了。進度條圓的厚邊框,自行設置方法將繪圖狀態置為保存值。
最近學了點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
摘要:功能三滴滴費用計算古人云細節決定成敗,一個良好的微信小程序往往就是一些細節打動人心,居然是模仿,雖做不到百分百,至少還是很希望一模一樣。 最近時常感嘆道:時間總是那么的快,轉瞬即逝。對于像我這種剛入門的小生來講,技術每天都在更新,框架也層出不窮,有時候還沒弄懂這個知識大牛們又推出了更好的技術。當然學習好的技術也是十分重要的。但是在學習之后怎樣才能夠得到自己想要的呢,一個好的建議便是靜...
摘要:仿滴滴出行項目最近,各大社區出現很多小伙伴的項目,趁著這股熱潮我也用擼了一個滴滴出行的項目。可是,后來在手機上發現,輸入的時候居然調不出軟鍵盤,寫項目的時候沒考慮到設備問題,簡直是大大的失誤。也就是說可以在組件內部進行請求,不需要提交。 Vue2.0 仿滴滴出行項目 最近,各大社區出現很多小伙伴的vue項目,趁著這股熱潮我也用vue擼了一個滴滴出行的項目。 效果預覽 showImg(h...
摘要:今天這篇文章要介紹的是一個酷炫的進度條的設計和實現,在進度的文字內容顏色以及切換的圖片等都可以自由設置。那么下面我們就開始從無到有實現一下這個酷炫的進度效果吧。三利用與來實現進度效果。四利用阻尼動畫實現進度條回彈效果。 showImg(/img/remote/1460000006465670); 今天這篇文章要介紹的是一個酷炫的進度條的設計和實現,在進度的文字內容、顏色以及切換的圖片等...
閱讀 3522·2021-10-08 10:04
閱讀 869·2019-08-30 15:54
閱讀 2185·2019-08-29 16:09
閱讀 1352·2019-08-29 15:41
閱讀 2279·2019-08-29 11:01
閱讀 1740·2019-08-26 13:51
閱讀 1030·2019-08-26 13:25
閱讀 1814·2019-08-26 13:24