摘要:源碼常用的圖標(biāo)有種一種是的菊花一種是的環(huán)今天我們用實(shí)現(xiàn)的環(huán)動(dòng)畫下節(jié)課實(shí)現(xiàn)的菊花注意幀數(shù)少的原因?qū)嶋H動(dòng)畫效果是很平滑的首先我們定義的畫布尺寸為在瀏覽器中縮放為顯示這個(gè)你可以根據(jù)實(shí)際需要調(diào)整定義環(huán)的圓心坐標(biāo)為半徑為算下周長(zhǎng)大概為后面會(huì)用
源碼: https://github.com/any86/any-...
ios/androidweb常用的loading圖標(biāo)有2種, 一種是ios的"菊花", 一種是android的"環(huán)". 今天我們用svg實(shí)現(xiàn)android的"環(huán)"動(dòng)畫, 下節(jié)課實(shí)現(xiàn)ios的"菊花".
注意: gif幀數(shù)少的原因, 實(shí)際動(dòng)畫效果是很平滑的.
demo
xml(svg)首先我們定義svg的畫布尺寸為50x50, 在瀏覽器中縮放為36x36顯示(這個(gè)36你可以根據(jù)實(shí)際需要調(diào)整), 定義環(huán)的圓心坐標(biāo)為25,25, 半徑為20(算下周長(zhǎng)大概為125, 后面會(huì)用到), 顏色為currentColor獲取父元素的color屬性的值, 環(huán)的寬度為5像素, 看下在沒寫css前的效果:
.a-loading { &-android { animation: rotate 2s linear infinite; transform-origin: center center; >circle { display: inline-block; animation: dash 1500ms ease-in-out infinite; stroke-linecap: round; // 端點(diǎn)是圓形 color: currentColor; } @keyframes rotate { 100% { transform: rotate(360deg); } } @keyframes dash { 0% { stroke-dasharray: 1, 200; } 50% { stroke-dasharray: 100, 200; stroke-dashoffset: -45; } 100% { stroke-dasharray: 100, 200; stroke-dashoffset: -124; } } } }stroke-dasharray
先解釋stroke-dasharray, 他是用來定義虛線的, 比如stroke-dasharray="50, 20"表示實(shí)線部分為50, 間隙20的虛線:
試想一下, 如果環(huán)也用虛線表示, 并且讓單位實(shí)線部分的長(zhǎng)度在環(huán)的周長(zhǎng)范圍內(nèi)變化,這不就實(shí)現(xiàn)了(半環(huán)/滿環(huán)等形態(tài)), 下面分別是stroke-dasharray的值為25, 200/ 50, 200 / 100, 200:
注意: 這里的200是隨意定義的, 表示虛線的間隙, 只要值大于環(huán)的周長(zhǎng)即可.
偏移, 值為正數(shù)的時(shí)候, 虛線逆時(shí)針回退, 負(fù)數(shù)順時(shí)針前進(jìn)(左圖的stroke-dashoffset:0, 環(huán)的起點(diǎn)在3點(diǎn)方向, 右圖設(shè)置為-10以后, 環(huán)的起點(diǎn)被順時(shí)針偏移了一段距離):
因?yàn)閯?dòng)畫中, 環(huán)在增加長(zhǎng)度的同時(shí)尾部在收縮長(zhǎng)度, 所以需要配合stroke-dashoffset實(shí)現(xiàn).
讓圓環(huán)只呈現(xiàn)一個(gè)點(diǎn), 為了讓循環(huán)一周后動(dòng)畫不突兀(你可以改成0對(duì)比下效果).
為了讓圓環(huán)呈現(xiàn)80%的環(huán), 所以設(shè)置實(shí)線部分長(zhǎng)度為100(125*0.8, 125是周長(zhǎng)): stroke-dasharray: 100, 200;, 同時(shí)尾部在收縮, 所以設(shè)置 stroke-dashoffset: -45;.
回到一個(gè)點(diǎn)的狀態(tài), 和0%狀態(tài)一致, 這樣動(dòng)畫循環(huán)起來不突兀, 但是從50%到100%的動(dòng)畫只是"尾部收縮", 所以我們用stroke-dashoffset:-124實(shí)現(xiàn),125-124=1 正好是一個(gè)像素, 好了動(dòng)畫到此就實(shí)現(xiàn)完畢了.
整體旋轉(zhuǎn)為了和安卓系統(tǒng)的動(dòng)畫一致, 讓整體也進(jìn)行旋轉(zhuǎn). 這里代碼比較簡(jiǎn)單不贅述.
animation屬性的擴(kuò)展如果大家仔細(xì)看過css的animation的文檔, 會(huì)發(fā)現(xiàn)animation可以同時(shí)支持多個(gè)過度動(dòng)畫, 比如animation: color 6s ease-in-out infinite, dash 1.5s ease-in-out infinite;, 用","分割多個(gè)動(dòng)畫.
所以我們其實(shí)還可以對(duì)上面的動(dòng)畫進(jìn)行擴(kuò)展, 比如旋轉(zhuǎn)的同時(shí)還有顏色變化:
&-android { animation: rotate 2s linear infinite; transform-origin: center center; >circle { display: inline-block; // 增加顏色變化的代碼 animation: color 6s ease-in-out infinite, dash 1.5s ease-in-out infinite; stroke-linecap: round; color: currentColor; } @keyframes rotate { 100% { transform: rotate(360deg); } } @keyframes dash { 0% { stroke-dasharray: 1, 200; } 50% { stroke-dasharray: 100, 200; stroke-dashoffset: -45; } 100% { stroke-dasharray: 100, 200; stroke-dashoffset: -124; } } @keyframes color { 0%, 100% { stroke: #6b5c5b; } 40% { stroke: #0057e7; } 66% { stroke: #008744; } 80%, 90% { stroke: #ffa700; } } }
本文代碼參考iview, 一個(gè)vue框架.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/116140.html
摘要:雖然有了十全的計(jì)劃,但如何高效率去記住上面那么多東西是一個(gè)大問題,看看我是怎么做的。 前言 前一篇文章講述了我在三月份毫無準(zhǔn)備就去面試的后果,一開始心態(tài)真的爆炸,但是又不服氣,一想到每次回來后家人朋友問我面試結(jié)果的期待臉,越覺得必須付出的行動(dòng)來證明自己了。 面經(jīng)傳送門:一個(gè)1年工作經(jīng)驗(yàn)的PHP程序員是如何被面試官虐的? 下面是我花費(fèi)兩個(gè)星期做的準(zhǔn)備,主要分三部分: 有計(jì)劃——計(jì)劃好...
摘要:拿到秋招的同學(xué),如確定入職需與用人單位簽署三方協(xié)議,以保證雙方的利益不受損失。當(dāng)然每個(gè)崗位所要求的側(cè)重點(diǎn)不同,但卻百變不離其宗。方法論要想達(dá)成某個(gè)目標(biāo)都有其特定的方法論,學(xué)習(xí)技術(shù)也不例外,掌握適當(dāng)?shù)膶W(xué)習(xí)方法才能事半功倍。 寫在前面的話 筆者從17年的2月份開始準(zhǔn)備春招,其中遇到不少坑,也意識(shí)到自己走過的彎路。故寫了這篇文章總結(jié)一番,本文適合主動(dòng)學(xué)習(xí)的,對(duì)自己要學(xué)的課程不明確的,對(duì)面試有...
摘要:拿到秋招的同學(xué),如確定入職需與用人單位簽署三方協(xié)議,以保證雙方的利益不受損失。當(dāng)然每個(gè)崗位所要求的側(cè)重點(diǎn)不同,但卻百變不離其宗。方法論要想達(dá)成某個(gè)目標(biāo)都有其特定的方法論,學(xué)習(xí)技術(shù)也不例外,掌握適當(dāng)?shù)膶W(xué)習(xí)方法才能事半功倍。 寫在前面的話 筆者從17年的2月份開始準(zhǔn)備春招,其中遇到不少坑,也意識(shí)到自己走過的彎路。故寫了這篇文章總結(jié)一番,本文適合主動(dòng)學(xué)習(xí)的,對(duì)自己要學(xué)的課程不明確的,對(duì)面試有...
摘要:整個(gè)項(xiàng)目簡(jiǎn)單還具有實(shí)用價(jià)值,可作為的實(shí)戰(zhàn)項(xiàng)目學(xué)習(xí)的調(diào)試工具欄。查看文檔自動(dòng)在個(gè)人首頁(yè)展示編程時(shí)長(zhǎng)的工具。通過學(xué)習(xí)這些前沿的人工智能論文,提前了解在未來更多可能性可以將圖片和視頻轉(zhuǎn)換成漫畫風(fēng)格的工具。興趣是最好的老師,HelloGitHub 讓你對(duì)編程感興趣!簡(jiǎn)介HelloGitHub 分享 GitHub 上有趣、入門級(jí)的開源項(xiàng)目。https://github.com/521xueweihan...
摘要:一是如何工作的在上是這樣描述的運(yùn)算符用于測(cè)試構(gòu)造函數(shù)的屬性是否出現(xiàn)在對(duì)象原型鏈中的任何位置換句話說,如果,那么必須是一個(gè)對(duì)象,而必須是一個(gè)合法的函數(shù)。下面我們舉一個(gè)例子一步步來說明第一步每一個(gè)構(gòu)造函數(shù)都有一個(gè)屬性。 在 JavaScript 中,我們通常用 typeof 判斷類型,但是在判斷引用類型的值時(shí),常常會(huì)遇到一個(gè)問題:無論引用的是什么類型的對(duì)象,都會(huì)返回 object(當(dāng)然還有...
閱讀 3162·2021-11-22 09:34
閱讀 659·2021-11-22 09:34
閱讀 2518·2021-10-08 10:18
閱讀 3447·2021-09-22 15:57
閱讀 2700·2021-09-22 15:25
閱讀 2507·2019-08-30 15:54
閱讀 2260·2019-08-30 15:44
閱讀 1856·2019-08-29 11:18