摘要:分析由上圖可以看出,波浪動(dòng)畫是由多個(gè)不同的波浪組成,而每個(gè)波浪則是由近似正弦圖形組成,最后的波動(dòng)效果,其實(shí)是靜態(tài)的波浪循環(huán)向左運(yùn)動(dòng)產(chǎn)生的。
之前做過CSS動(dòng)畫、canvas動(dòng)畫,但svg動(dòng)畫第一次做,最終效果如下圖所示。
由上圖可以看出,波浪動(dòng)畫是由多個(gè)不同的‘波浪’組成,而每個(gè)波浪則是由近似正弦圖形組成,最后的‘波動(dòng)’效果,其實(shí)是靜態(tài)的波浪循環(huán)向左運(yùn)動(dòng)產(chǎn)生的。
同時(shí)介紹后面會用到的幾個(gè)svg相關(guān)標(biāo)簽:
path:定義形狀的基礎(chǔ)元素,其中d屬性就是圖形的路徑。靜態(tài)的波浪就是這個(gè)元素繪制的,后面會再多帶帶介紹
animateTransform:定義目標(biāo)元素的變形屬性,波浪的循環(huán)移動(dòng)就是使用這個(gè)屬性實(shí)現(xiàn)的
g:組合對象的容器
繪制單個(gè)靜態(tài)波浪上面是寫好的單個(gè)波浪,其中d屬性繪制了形狀,fill屬性表示填充的顏色。
d屬性中使用了以下幾個(gè)命令:
M:M x y表示移動(dòng)到(x, y)點(diǎn)( svg中左上角是(0,0)點(diǎn) )
Q:Q x1 y1, x2 y2表示繪制二次貝塞爾曲線,x1 y1為二次貝塞爾的控制點(diǎn),x2 y2為終點(diǎn),可以使用貝塞爾生產(chǎn)曲線工具幫助生成。
T:T x y表示生成上一個(gè)二次貝塞爾曲線的鏡像,其終點(diǎn)坐標(biāo)為(x,y)
V:V y表示從當(dāng)前點(diǎn)(x0,y0)垂直移動(dòng)到(x0, y)
H:H x表示從當(dāng)前點(diǎn)(x0, y0)水平移動(dòng)到(x, y0)
所以上面代碼可以翻譯后為:首先移動(dòng)到(0,70)處,再繪制起點(diǎn)為(0,70),終點(diǎn)為(150,70),控制點(diǎn)為(75,39)的二次貝塞爾曲線,接著繪制已(300,70)為終點(diǎn)的鏡像二次貝塞爾曲線,最后依次移動(dòng)到(100,70),(0,70),(0,0),從而形成閉合曲線。
動(dòng)起來增加了animateTransform后就動(dòng)其來了,該標(biāo)簽的幾個(gè)屬性含義為:
attributeName:需要運(yùn)動(dòng)的屬性 type:具體運(yùn)動(dòng)的類型 from:運(yùn)動(dòng)初始值 to:運(yùn)動(dòng)終點(diǎn)值 dur:運(yùn)動(dòng)時(shí)間 repeatCount:重復(fù)次數(shù),indefinite為無限循環(huán)
看了后就發(fā)現(xiàn)其實(shí)很簡單,有一下幾個(gè)點(diǎn)需要注意,首先path繪制圖形的路徑至少是svg寬加上from-to的寬,第二,to的值為周期的n/2倍,這個(gè)可以想象一下正弦的波形。注意了這兩點(diǎn),波浪看起來已經(jīng)有點(diǎn)模樣了。
多個(gè)波浪合成只有一個(gè)波浪,看起來還是不夠逼真,將多個(gè)不同周期波浪合成,并填充不同透明度的顏色形成最終效果。
抽象成組件
當(dāng)手寫兩個(gè)波浪之后,就會發(fā)現(xiàn)很多地方是相同的,總結(jié)之后會發(fā)現(xiàn)只有svg的寬高、周期、峰值、移動(dòng)速度、初始偏移量(即正弦的初相位)、填充顏色、疊加波浪個(gè)數(shù)這幾個(gè)是變化的,因此可以做成組件,隱藏內(nèi)部的復(fù)雜度。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87219.html
摘要:分析由上圖可以看出,波浪動(dòng)畫是由多個(gè)不同的波浪組成,而每個(gè)波浪則是由近似正弦圖形組成,最后的波動(dòng)效果,其實(shí)是靜態(tài)的波浪循環(huán)向左運(yùn)動(dòng)產(chǎn)生的。 之前做過CSS動(dòng)畫、canvas動(dòng)畫,但svg動(dòng)畫第一次做,最終效果如下圖所示。showImg(https://segmentfault.com/img/bVSKfU?w=428&h=198); 分析 由上圖可以看出,波浪動(dòng)畫是由多個(gè)不同的‘波浪’...
摘要:同行這么做使用實(shí)現(xiàn)圓形進(jìn)度條前端掘金在開發(fā)微信小程序的時(shí)候,遇到圓形進(jìn)度條的需求。實(shí)現(xiàn)也談數(shù)組去重前端掘金的數(shù)組去重是一個(gè)老生常談的話題了。百度前端技術(shù)學(xué)院自定義前端掘金一標(biāo)簽概念元素表示用戶界面中項(xiàng)目的標(biāo)題。 閑話圖片上傳 - 掘金作者:孫輝,美團(tuán)金融前端團(tuán)隊(duì)成員。15年畢業(yè)加入美團(tuán),相信技術(shù),更相信技術(shù)只是大千世界里知識的一種,個(gè)人博客: https://sunyuhui.com ...
摘要:同行這么做使用實(shí)現(xiàn)圓形進(jìn)度條前端掘金在開發(fā)微信小程序的時(shí)候,遇到圓形進(jìn)度條的需求。實(shí)現(xiàn)也談數(shù)組去重前端掘金的數(shù)組去重是一個(gè)老生常談的話題了。百度前端技術(shù)學(xué)院自定義前端掘金一標(biāo)簽概念元素表示用戶界面中項(xiàng)目的標(biāo)題。 閑話圖片上傳 - 掘金作者:孫輝,美團(tuán)金融前端團(tuán)隊(duì)成員。15年畢業(yè)加入美團(tuán),相信技術(shù),更相信技術(shù)只是大千世界里知識的一種,個(gè)人博客: https://sunyuhui.com ...
摘要:原作者效果內(nèi)容是一個(gè)溫度顯示儀器,上方一個(gè)當(dāng)前溫度顯示,下方還有一個(gè)溫度刻線。原教程使用了布局,給整個(gè)容器加上了的高度,讓在沒有內(nèi)容的時(shí)候也能被沾滿。設(shè)置上部分占高度的,下部分為。溫度的數(shù)據(jù)要從的實(shí)例中獲取,然后進(jìn)行一個(gè)輸出。 前言 所謂站在巨人的肩膀上學(xué)習(xí),是因?yàn)檫@個(gè)例子是來自于一個(gè)來自于國外的每周插件的欄目的教程,所以我很嚴(yán)肅的說清楚這點(diǎn)!這篇文章是自己通過這個(gè)例子的學(xué)習(xí)后,的一些...
摘要:按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以打開原始頁面。 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以打開原始頁面。 1. 一個(gè)正 20 面體的骰子https://codepen.io/chrisvfrit... 2. 純 css 寫的夜間景色的視差滾動(dòng)效果https://codepen.io/danbhala/p... 3. 機(jī)器人喝油的動(dòng)畫https://co...
閱讀 1217·2021-11-24 09:39
閱讀 2141·2021-11-22 13:54
閱讀 2132·2021-09-08 10:45
閱讀 1460·2021-08-09 13:43
閱讀 2995·2019-08-30 15:52
閱讀 3095·2019-08-29 15:38
閱讀 2857·2019-08-26 13:44
閱讀 3063·2019-08-26 13:30