這篇文章里面使用jquery實(shí)現(xiàn),但原理是一樣的,在小程序中只要定義并改變相應(yīng)的變量就行了
另,文中的圖片是window自帶的工具繪制的,使用起來(lái)不方便。如果有好用的繪圖軟件,請(qǐng)瀏覽 推薦,謝謝!
正文:
在開(kāi)發(fā)微信小程序的時(shí)候,遇到圓形進(jìn)度條的需求。使用canvas繪圖比較麻煩:
1、為了實(shí)現(xiàn)在不同屏幕上面的適配,必須動(dòng)態(tài)的計(jì)算進(jìn)度條的大??;
2、在小程序中,canvas的畫(huà)布具有最高的層級(jí),不易于擴(kuò)展。
但使用css3和js實(shí)現(xiàn)圓形進(jìn)度條就很容易的避免了這方面的問(wèn)題。
在平時(shí)的開(kāi)發(fā)中,經(jīng)常使用元素的border來(lái)顯示圓形圖案,在使用css3實(shí)現(xiàn)圓形進(jìn)度條時(shí),同樣也是使用這個(gè)技巧。為了實(shí)現(xiàn)上面的圓形邊框,動(dòng)態(tài)的覆蓋下面圓形邊框,總共需要一個(gè)圓形,2個(gè)長(zhǎng)方形和2個(gè)半圓形:一個(gè)圓形用來(lái)顯示底層背景,兩個(gè)半圓形用來(lái)覆蓋底層背景顯示進(jìn)度,另外兩個(gè)長(zhǎng)方形用來(lái)覆蓋不需要顯示的進(jìn)度。如下圖:
最下面的bottom圓形是進(jìn)度條的背景,在bottom上面有l(wèi)eft和right兩個(gè)長(zhǎng)方形,用來(lái)覆蓋不要顯示的進(jìn)度條。在兩個(gè)長(zhǎng)方形的里面分別有一個(gè)半圓形用來(lái)顯示進(jìn)度。正常情況下,使用正方形繪制出來(lái)的半圓,直徑和水平下都是有45度夾角的。為了能使兩個(gè)半圓剛好可以覆蓋整個(gè)圓形,就需要使用css3中的rotate使原有正方形旋轉(zhuǎn),達(dá)到覆蓋整個(gè)背景的效果。如下圖(為了顯示清楚,這里用正方形表示):
如圖,將長(zhǎng)方形內(nèi)部的半圓向右(順時(shí)針)旋轉(zhuǎn)45度,就可以得到進(jìn)度覆蓋整個(gè)背景的圖像。將半圓向左(逆時(shí)針)旋轉(zhuǎn)135度就能得到只有進(jìn)度條背景的圖像。為什么又要向左旋轉(zhuǎn),而不是一直向右旋轉(zhuǎn),當(dāng)然是因?yàn)橐獙?shí)現(xiàn)的效果是:進(jìn)度是從頂部開(kāi)始,順時(shí)走完的。到這里,思路就很清晰了,只需要再按百分比的多少來(lái)控制左邊和右邊進(jìn)度的顯示就可以了。
實(shí)現(xiàn)這部分的html和css代碼如下:
html代碼
css代碼: