簡單的實現畫任意長度圓弧的DEMO

2021-09-07 09:04:29 字數 2078 閱讀 6022

最近一直在自己瞎搗鼓,也不知怎麼思緒就跑到了畫圖表的上面來了(估計是思緒總是希望能飛一會),然後簡單實現了載入進度條的demo

當然這個非常簡單就沒必要貼原始碼了

然後又看著360體檢那個小球做了個這個

當然這個實現起來也非常簡單,做起動畫也沒什麼阻礙

然後障礙就來了,其實就是想做個這個玩意

就是個圈兒,當然是任意長度的圓弧,可以不閉合那種,看起來非常簡單,確實也實現了

css樣式

.circle_area

.circle_empty

.circle_empty:before,.circle_empty:after

.circle_empty:before

.circle_empty:after

當然這也是非常容易做的,只需要改變各個元素的背景色以及偽元素的旋轉角度就可以做出任意圓環

這個時候我就想,作為乙個正在研習前端動畫的人來說,做個好看的動畫多好,然後......

就坑慘我了

當然我在網上確實找到了相關例子,使用canvas也能做,對大神來說似乎也不是個事(但是我不是啊...)

這是網上那個例子:想起來了,我就是看這個例子帶亂了我的思緒)

所以呢就開始自己瞎搗鼓,兩個小時的時間差不多就完成了乙個簡單demo,還沒怎麼測,也沒用什麼複雜的東西,只不過是要表達一種思路而已

html**:

名字還沒怎麼認真取,當然沒必要拘泥我這種形式,demo_left和demo_right用偽類也可以

css**:

.demo

.demo_left

.demo_center

.demo_right

基本沿襲了靜態的思路

//方法的使用

let demo***** = (value) =>

//實際控制動畫效果

let rotatedemo = (angle,deg) => else );

$(".demo_left").css("transform","rotate(" + (deg - 180) +"deg)");

}deg++;

settimeout(function(),10)

} }

value就是你傳入的數值,我這是以百分比顯示的,所以value最大是100

下面說一下簡單思路

1、先建立乙個圓,也就是class="demo"那個圓作為主體

2、再建立乙個比剛才小的圓,也就是class="demo_center"使用頁面背景色形成圓環,當然這可以不要,你就能畫個扇形出來

3、建立一左一右兩個塊,大小一致,正好擋住demo這個圓,但是center在它倆上面,也就是center的z-index的值最大,初始階段left的z-index要大於right,left以右側中心為圓點旋轉,right以左側中心為圓點旋轉

4、在這個時候只要設定left與right的旋轉角度就可以建立乙個圓弧,但是角度不會超過180,畢竟即使left和right疊在一起也佔了180度

5、所以當需要顯示的角度小於等於180時,只需要轉動right就可以

6、但是當你需要顯示的角度大於180時,簡單轉動right肯定是不可行的了,所以此時的處理是將right再轉回初始位置,背景顏色與主體那個圓一致,並且要將它放置在left之上了(如果不這麼做left再怎麼旋轉也不會減少角度),然後轉動left就能繼續增加圓環長度,至此demo完成

當然寫這個不是教技術,只是簡單記錄分享一下我的思路,如果有人正好需要這個東西也很高興能幫你忙

消除textarea的空格de長度值

在專案中因為用到文字域textarea輸入textarea的長度總是顯示 25 那是還懷疑textarea自帶有value長度?placeholder屬性的長度?那時候想到類似 ul無序列表li元素浮動float 運用css屬性新增 font size 0 消除那間隔!可是,一試用不對勁,直接把文字...

任意長度正數的相減

兩個任意長度的正數相減,這兩個正數可以帶小數點,也可以是整數,請輸出結果。輸入的字串中,不會出現除了數字與小數點以外的其它字元,不會出現多個小數點以及小數點在第乙個字元的位置等非法情況,所以考生的程式中無須考慮輸入的數值字串非法的情況。詳細要求以及約束 1.輸入均為正數,但輸出可能為負數 2.輸入輸...

繪製圓弧的幾種簡單方法

展示圖 繪製圓弧 true 逆時針 false 順時針 context.linewidth 5 context.strokestyle pink context.arc 40,40,30,0,math.pi 2 context.stroke 外環是粉色的圓,無填充色 context.beginpat...