使用SVG實現(xiàn)圓環(huán)loading動畫

畫圓

用SVG畫一個圓先。

html:
<svg class="load" viewBox="25 25 50 50">
    <circle class="loading" cx="50" cy="50" r="20" fill="none" />
</svg>
.load {
    width: 80px;
    height: 80px;
}
.loading {
    stroke: rgb(53, 157, 218);
    stroke-width: 5;
    fill: none;
 }

效果是這樣的:


用SVG畫圓

動畫

定義一個動畫并使用查刻。

@keyframes dash {
   0% {
      stroke-dasharray: 1, 200;
      stroke-dashoffset: 0;
    }
    50% {
      stroke-dasharray: 130, 200;
      stroke-dashoffset: -50;
    }
    100% {
      stroke-dasharray: 130, 200;
      stroke-dashoffset: -188;
    }
}
.loading {
    stroke: rgb(53, 157, 218);
    stroke-width: 5;
    fill: none;
    animation: dash 1.5s linear infinite;
 }

效果變成這樣:

旋轉

最后給動畫添加上旋轉的效果。

@keyframes rotate {
    0% {
      transform: rotate(0deg);
    }
    100% {
      transform: rotate(360deg);
    }
}
.load {
    animation: rotate 2s linear infinite;
}

最終的效果:

原理

主要利用 SVG 繪制一個圓形凤类,結合其 stroke 屬性穗泵,最后加上一些 css3 中的動畫,實現(xiàn)最終的 loading 動畫效果谜疤。
  繪制圓形時佃延,使用 SVG <circle> 標簽,下面是 SVG 代碼:

<svg class="load" viewBox="10 10 80 80">
    <circle class="loading" cx="50" cy="50" r="30" />
</svg>
  • cx, cy:定義圓點的 x 和 y 坐標现诀,默認為(0,0);
  • r:定義圓形的半徑履肃;
  • viewBox="x, y, width, height":x:左上角的橫坐標仔沿,y:左上角縱坐標,width:寬度尺棋,height:高度封锉。這個就像qq截圖,x膘螟,y 是選中的起始點成福,width 和 height 是選擇截圖的寬度和高度。viewBox 區(qū)域會鋪滿 SVG荆残,所以可以定義 SVG 的大小奴艾,來限制 viewBox 的大小。

繪制好圓形脊阴,使用SVG的 stroke 屬性握侧,來自定義描邊樣式。常見的 stroke 屬性有:

  • stroke:定義描邊的顏色嘿期;
  • stroke-width:定義描邊的寬度品擎;
  • stroke-dasharray:用于創(chuàng)建虛線描邊;
stroke-dasharray: 10, 10;
  • stroke-dashoffset:定義描邊的起始位置备徐;
stroke-dashoffset:10;
  • stroke-linecap:定義描邊端點的樣式萄传;


    圖片來自于[SVG|MDN](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial/Fills_and_Strokes)
  • stroke-linejoin:定義兩個描邊線段之間連接方式;


    圖片來自于[SVG|MDN](https://developer.mozilla.org/zh-CN/docs/Web/SVG/Tutorial/Fills_and_Strokes)
  • stroke-opacity:定義描邊的透明度蜜猾;

利用這些stroke屬性秀菱,定義前面出現(xiàn)的@keyframes dash、@keyframes rotate蹭睡,就可以達到我們想要的效果了衍菱。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肩豁,隨后出現(xiàn)的幾起案子脊串,更是在濱河造成了極大的恐慌,老刑警劉巖清钥,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件琼锋,死亡現(xiàn)場離奇詭異,居然都是意外死亡祟昭,警方通過查閱死者的電腦和手機缕坎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來篡悟,“玉大人谜叹,你說我怎么就攤上這事匾寝。” “怎么了叉谜?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵旗吁,是天一觀的道長。 經(jīng)常有香客問我停局,道長很钓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任董栽,我火速辦了婚禮码倦,結果婚禮上,老公的妹妹穿的比我還像新娘锭碳。我一直安慰自己袁稽,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布擒抛。 她就那樣靜靜地躺著推汽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歧沪。 梳的紋絲不亂的頭發(fā)上歹撒,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音诊胞,去河邊找鬼暖夭。 笑死,一個胖子當著我的面吹牛撵孤,可吹牛的內(nèi)容都是我干的迈着。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼邪码,長吁一口氣:“原來是場噩夢啊……” “哼裕菠!你這毒婦竟也來了?” 一聲冷哼從身側響起闭专,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤奴潘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喻圃,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡粪滤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年斧拍,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杖小。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡肆汹,死狀恐怖愚墓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情昂勉,我是刑警寧澤浪册,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站岗照,受9級特大地震影響村象,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜攒至,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一厚者、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧迫吐,春花似錦库菲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至溉浙,卻和暖如春烫止,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背放航。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工烈拒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人广鳍。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓荆几,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赊时。 傳聞我的和親對象是個殘疾皇子吨铸,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 上個項目用到svg實現(xiàn)一個水流的動畫,鑒于沒學習幾天祖秒,所以懂的也不多诞吱,就此分享一下。首先svg是什么竭缝,svg可縮放...
    會飛的豬l閱讀 4,121評論 0 5
  • 在React Native中使用ARTReact Native ART 究竟是什么?所謂ART房维,是一個在React...
    JackfengGG閱讀 9,495評論 2 50
  • 一:canvas簡介 1.1什么是canvas? ①:canvas是HTML5提供的一種新標簽 ②:HTML5 ...
    GreenHand1閱讀 4,674評論 2 32
  • 一:什么是SVG抬纸? 對于SVG的定義如下: ①:SVG 指的是可伸縮矢量圖形 (Scalable Vector G...
    GreenHand1閱讀 798評論 0 1
  • 一個客戶聽說我善于團隊訓練咙俩,便邀請我去幫他們。這個客戶所在企業(yè)有很強的組織文化,人們行事善于目標導向阿趁,執(zhí)行力強膜蛔。當...
    BigSpirit閱讀 1,248評論 0 3