使用Anime.js製作火箭升空的動畫效果

2021-03-02 CScript

  由頭:最近在公司第一次使用Golang做了一個beta版的小型Saas項目,在編寫項目前端主頁的時候看到很多類似項目首頁都多少添加了動畫效果,這種展示方式結合文案顯得格外生動。於是我就準備在項目中添加動畫元素。

             動畫效果展示

  經過搜尋引擎的內容索引,我發現現在這個階段可以實現動畫效果有幾種方式:gif, css3, openGL,canvas,Javascript等。我首先排除了gif這種方式,原因很簡單這種動畫方式會隨著網頁的縮放失真,我們無法預期用戶展開網站之後的尺寸所以就先pass掉了。其他幾種方式都已經成為了新的web標準,而且都是通過矢量方式實現動畫效果,不會損失渲染後的效果。 對於我來說接下來還有個難題,那就是如何在短時間內上手其中之一應用到項目,畢竟我沒有在項目開發周期中預留這部分的時間,這也算是個讓人難以抉擇的問題。

  做項目就是這樣,想要把新的東西引入到項目,會面對很多不確定性。然而為了拓展一下邊界,總是得面對這種不確定性,才能在不確定性中受益。依照我web項目開發的經驗,既然這幾種動畫效果的實現方式都已經成為web標準,那麼肯定有很多人已經或者至少想過封裝出更加易用的工具庫或者是腳手架。繼續搜索🔍"web animation package", 然後找到了一個匹配度很高的JS庫:anime,使用anime可以為dom結構,css屬性,svg圖片,JS對象創建動畫效果,看了下文檔,簡單的動畫效果很容易實現。現在有動畫製作的工具庫了,接下來就準備著手準備動畫素材。

  本人沒有任何繪製矢量圖的能力和經驗,所以這些素材也要在網際網路上找。我對於素材的預期有一個標準那就是儘可能的讓所有的素材風格統一,沒有人喜歡看一堆風格不統一的元素亂湊在一起,顯得非常不專業。於是我又物色到了一個開源的svg素材網站:undraw和阿里巴巴icon。undraw有豐富的基於web項目的svg素材:

阿里巴巴icon有豐富icon的可供選擇:

  我可以從這兩個網站下載svg素材,然後使用Figma為svg做一些簡單編輯:

Figma操作界面

以上都是準備階段的闡述,好像略微有些囉嗦。我的目的主要是為了儘量詳細的陳述我在做這件事的整個過程,包括思維和各種嘗試突破我已有的知識體系可以探索的邊界。接下來重點來啦,那麼如何使用animejs結合圖片素材製作web動畫?在此我只講一個簡單的小案例非常簡單。

首先根據你的web project類型選擇安裝anime的方式,如果只是個簡單的html靜態頁面不依賴任何前端編譯工具,那麼你只要使用script標籤引入html:

//下載anime.min.js,引入本地文件<script src="anime.min.js"></script>

如果你的項目使用了npm那麼可以:

npm install animejs //ESM方式引入import anime from 'animejs/lib/anime.es.js';// 或者 commonJS方式引入const anime = require('animejs');

引入anime之後就可以簡單的調用了,例如我想製作一個svg素材動畫。先看下動畫效果:


徐徐上升的火箭下面有四朵熊熊燃燒火焰,那麼是如何實現的呢?

四個上下擺動的火焰是svg的四個Vector節點:

          <svg id="rocket-svg"               width="1136"               height="815"               viewBox="0 0 1136 815"               fill="none"               xmlns="http://www.w3.org/2000/svg">               ....              <g id="fire1">                <path id="Vector_41"                      d="M424.86 649.65H424.21C421.149 649.65 418.214 648.434 416.05 646.27C413.886 644.106 412.67 641.171 412.67 638.11V585.25H436.4V638.11C436.4 641.171 435.184 644.106 433.02 646.27C430.856 648.434 427.921 649.65 424.86 649.65Z"                      fill="url(#paint3_linear)" />              </g>              <g id="fire2">                <path id="Vector_42"                      d="M501.19 651.4H500.54C497.479 651.4 494.544 650.184 492.38 648.02C490.216 645.856 489 642.921 489 639.86V587H512.73V639.86C512.73 642.921 511.514 645.856 509.35 648.02C507.186 650.184 504.251 651.4 501.19 651.4Z"                      fill="url(#paint4_linear)" />              </g>              <g id="fire3">                <path id="Vector_43"                      d="M550.19 650.4H549.54C546.479 650.4 543.544 649.184 541.38 647.02C539.216 644.856 538 641.921 538 638.86V586H561.73V638.86C561.73 641.921 560.514 644.856 558.35 647.02C556.186 649.184 553.251 650.4 550.19 650.4Z"                      fill="url(#paint5_linear)" />              </g>              <g id="fire4">                <path id="Vector_44"                      d="M628.19 649.4H627.54C624.479 649.4 621.544 648.184 619.38 646.02C617.216 643.856 616 640.921 616 637.86V585H639.73V637.86C639.73 640.921 638.514 643.856 636.35 646.02C634.186 648.184 631.251 649.4 628.19 649.4Z"                      fill="url(#paint6_linear)" />              </g>                              ....
<script>
import anime from 'animejs/lib/anime.es.js'; anime({ targets: "#fire1", translateY: 30,       direction: "alternate", loop: true, easing: "linear", }); anime({ targets: "#fire2", translateY: 40, direction: "alternate", loop: true, easing: "linear", }); anime({ targets: "#fire3", translateY: 45, direction: "alternate", loop: true, easing: "linear", }); anime({ targets: "#fire4", translateY: 35, direction: "alternate", loop: true, easing: "linear", });</script>



這種方式可以製作簡單的動畫效果,但是想要製作出比較豐富的動畫效果還是需要花時間去了解web動畫的標準庫例如CSS3,這只是一種可以快速實現的方式當時,今天的分享就到這裡。

相關連結:

     https://github.com/juliangarnier/anime/

     https://undraw.co/illustrations

      https://www.figma.com/files/recent

更多關於CScrit頻道的信息:

愛發電主頁: https://afdian.net/@CScript

Telegram群組: https://t.me/CScriptGroup 

Norton的微博: https://www.weibo.com/u/25934729

加入微信交流群請添加頻道小助手微信

小助手微信

如果你覺得本公眾號對你有幫助的話,請點讚!轉發!在看!關注!你們的支持是我創作的最大動力✌️✌️

👇👇👇【閱讀全文】更多趣味編程在這裡!

相關焦點

  • 使用reveal.js製作精美的網頁版PPT
    但苦於mac上運行PPT那感人的流暢度, 成功的激起了筆者的強迫症, 所以索性想辦法通過技術的手段來做個網頁版PPT, 這個時候筆者發現了reveal.js: 一個使用 HTML 語言製作演示文稿的 Web 框架,支持插入多種格式的內容,並以類似 PPT 的形式呈現. 花了15分鐘系統的調研了一下, 覺得基本滿足技術分享類PPT的要求, 所以決定採用該方案來實現我的網頁版PPT.
  • 使用jQuery的animate()+CSS樣式實現動畫效果及stop()停止動畫
    01第1節:jQuery動畫概述#JavaScript#在jQuery中,除了可以淡入淡出、滑動效果之外,還可以使用animate()方法創建自定義的動畫效果。在使用多個CSS樣式屬性時,要使用英文的逗號隔開即可,如下是多動畫的效果代碼:<!
  • 火箭,升空!這群重慶孩子搭載夢想的水火箭「發射」啦
    用水作為動力,加壓之後製作的「水火箭」能飛多遠?50米?100米?150米?答案可能沒有定數。 由重慶南渝中學初二年級學生利用所學物理知識製作的「水火箭」,在本周一和周四兩天「擇機發射」,並最終落向設計者預期的目的地。
  • 五年級信息技術教案 當個動畫設計師(製作逐幀動畫)
    教學過程:一、導言揭題1、導入:每當我們坐在電視機前,觀看「長徵」火箭一次次成功長升空時,不禁熱血沸騰,深深感受到祖國科學技術水平在快速提升,綜合國力在不斷增強。如果使用Flash軟體,親手製作模擬火箭發射過程的動畫,肯定是一個十分開心且有意義的事情。2、揭題:(出示課題) 第七課: 當個動畫設計師---製作逐幀動畫二、輕鬆學1、認識Flash界面。
  • 骨骼動畫在Html5使用攻略
    概念骨骼動畫有諸多優點在遊戲,動畫製作,動漫都有非常多的運用。跟幀動畫比較來說,幀動畫的每一幀都是角色特定姿勢的一個快照,動畫的流暢性和平滑效果都取決於幀數的多少。而骨骼動畫則是把角色的各部分身體部件圖片綁定到一根根互相作用連接的「骨頭」上,通過控制這些骨骼的位置、旋轉方向和放大縮小而生成的動畫。
  • 為什麼Anime Studio這款動畫軟體這麼受歡迎?
    原文網址:http://www.cartoonbrew.com/sponsored-by-smith-micro/why-everybody-is-using-anime-studio-pro-120743.html原文標題:《為什麼每個人都在使用Anime Studio?》
  • 輪播圖效果,不再局限於JS製作!
    在開發工程師進行製作的時候往往會選擇使用JS來書寫,由此不禁會問,難道真的只有使用JS才能製作輪播圖嗎?本文主要內容1. 效果展示2. 主要涉及到的知識點3. 基本實現思路4. 案例實現1.效果展示CSS3動畫效果的強大不言而喻,自它出現一直是熱度不減,毋庸置疑的是CSS3動畫的出現在一定程度上降低了動畫效果的實現難度。其精練的代碼把我們從複雜的JS製作中解放出來,如下的輪播圖效果即是純CSS3製作的。
  • 前端高效開發必備的 js 庫梳理
    Node.js HTTP 客戶端搭配使用fly.js 一個基於promise的http請求庫, 可以用在node.js, Weex, 微信小程序, 瀏覽器, React Native中動畫庫Anime.js
  • 使用 SVG 製作加載動畫
    最近我們設計師反饋,他想要做如下的一個加載動畫。
  • 傳祺GS4號」火箭成功升空
    本次發射任務中,廣汽傳祺旗下全系車型成為快舟火箭試驗隊官方合作用車,為試驗隊提供移動保障,第二代傳祺GS4家族與傳祺GS8家族擔任火箭發射車護衛隊,全面護航「快舟·傳祺GS4號」火箭發射!這枚擁有致敬醫護工作者塗裝的「快舟· 傳祺GS4號」火箭是一型成熟的小型固體運載火箭,此前已成功完成了8次商業發射。
  • SpaceX全新獵鷹火箭升空:發射次數超2019年
    北京時間11月21日凌晨1點17分8秒,在美國加州范登堡空軍基地,一枚全新的獵鷹9號火箭發射升空,將歐美合作的一枚衛星送入太空。值得注意的是,本次發射沒有使用回收火箭,而是一枚全新的,編號B1063.1。
  • 日本曾全力開發瘋狂戰機,採用火箭動力升空,三分鐘到達萬米高空
    日本製造的火箭攔截機——"秋水"攔截戰略轟炸機在1944年以前,德國完善的防空體系還能夠有效幹擾盟軍的轟炸,但隨著更加先進的遠程高空轟炸機投入使用,盟軍的戰略轟炸越來越有效果。德國原有的、數量龐大的防空炮體系,以及能夠升空進行攔截的中高空戰鬥機:Bf.109、Fw.190戰機的作戰效果開始變差。同樣遭受到盟軍戰略轟炸的日本,防空條件和戰機條件都要比德國差上很多。正當日本人一籌莫展的時候,德國向日本開出了一劑"藥",這"藥"便是本文要介紹的日本火箭攔截機:"秋水"。
  • Velocity.js介紹
    jQuery原本不是以動畫引擎為目標設計的,而是為了使煩人的DOM操作變得方便高效(效果確實令人驚訝).幸運的是目前就有一些開源的動畫庫,使得你可以繞開jQuery去利用原生JS那令人驚嘆的魔力。通過這些動畫庫,您可以建立一個可控的動畫工作流,而且這一切都基於能大幅提升網站動畫性能的特徵層之上。
  • PS與Ai結合製作閃動的霓虹燈字效果
    來源:美工隊長 ID:HFDSMG我們平時在做一些電商專題的時候經常需要用ps製作霓虹燈字的效果,來襯託氣氛,這裡就給大家分享一篇
  • 關於Vue.js的v-for,key的順序改變,影響過渡動畫表現
    關於Vue.js的v-for,key的順序改變,影響過渡動畫表現關於
  • 長徵八號點火升空:中國首款面向商業發射火箭、無毒無汙染
    2020年臨近尾聲,中國航天事業又實現了一個新成就——12月22日12時37分許,我國長徵系列運載火箭的新成員長徵八號遙一運載火箭在海南文昌航天發射場點火升空。長徵八號是中國長徵系列火箭家族的最新成員,2016年正式公開,是中國航天科技(000901,股吧)集團首款面向商業市場設計的新型火箭,以商業化、低成本、方便快捷、好使用為目標,很好地權衡了成本和性能,從籤署合同到火箭出廠只需約12個月,發射周期更是只要大約10天。
  • PS動畫—使用時間軸製作漸隱效果的字體
    自從Photoshop CS3後,Adobe則將塬來的ImageReady整拼到Photoshop中,因此直接透過Photoshop就可完成Gif動畫製作,相當的方便,但到了Photoshop CS6後,則會發現到,在塬來視窗的功能表中,卻找不到「動畫」選項,只有「時間軸」,其實在Photoshop CS3後,就有時間軸的存在,它除了可拿來製作影片外,也可用來製作Gif的動畫,且會比塬來的逐格方式更加的順暢
  • 日本ACG產業周報:DMM進軍動畫投資製作與版權許可領域;東京電視臺動畫網站Animeteleto 導入付費制度
    提供各項網絡服務的DMM股份有限公司日前宣布正式進軍動畫製作領域。4月份即將播出的《有頂天家族2》是由P.A WORKS製作的人氣作品第2彈。此外《DIVE!!》是富士電視臺旗下動畫品牌「Noitamina」(ノイタミナ)的夏季作品。這兩部均是大型IP。尤為引人注目的是《銀河英雄傳說》項目。2015年8月Production I.G公布了動畫製作消息。而此次DMM取得了《銀河英雄傳說》海外市場相關權利和一部分日本國內版權許可。
  • SVG 實現動態模糊動畫效果
    SVG動態模糊效果,並將其應用於HTML元素的常規JS或CSS動畫。動態模糊是一種廣泛使用於動態影像和動畫的技術,它能使動作看起來更加平滑自然。——維基百科上對動態模糊的介紹在這篇文章中,我們將介紹如何對水平或垂直的轉換製作出類似的動態模糊效果。注意:這種效果非常實用,但只有一些現代瀏覽器才支持。到目前為止,貌似Chrome具有最佳的性能。為了對動畫應用動態模糊效果,我們需要在每個幀中根據對象的速度和它移動的方向應用方向模糊。
  • PPT動畫效果製作技巧,你掌握了嗎?
    我們經常會看到一些「PPT大神」製作的PPT,他們的動畫總是能夠第一眼就吸引了我們,整個PPT的製作看上去酷炫又富有創意,能達到這種製作水平想必背後下了不少功夫,少不了長時間去積累掌握各種技巧與學習,那麼我們也能不能達到這種程度呢,首先我們要知道並去掌握PPT的動畫效果製作技巧。