1. 程式人生 > 實用技巧 >如何實現微信小程式動畫?新增到我的小程式動畫實現詳細講解,輕鬆學會動畫開發!附桌布小程式原始碼下載連結

如何實現微信小程式動畫?新增到我的小程式動畫實現詳細講解,輕鬆學會動畫開發!附桌布小程式原始碼下載連結

為了讓使用者能儘可能多地使用小程式,也算是沉澱使用者,現在很多小程式中,都有引導使用者“新增到我的小程式”的操作提示,而且大多都是有動畫效果。在高清桌布推薦小程式首頁,使用者每次進入,都會在頁面右上方,顯示“新增小程式”的動畫提示,如下圖所示:

怎麼實現這樣的關注提示功能呢?首先,進入pages/index/index.wxml檔案中,編寫佈局程式碼如下:

1 <!-- “新增小程式”的動畫提示 -->
2  
3 <view hidden='{{isWebChatTipsHidden}}' class='wx_tip'>
4  
5   <image src="/images/tip_ios.svg"
></image> 6 7 </view>

佈局程式碼很簡單,主要是通過樣式實現圖片“心跳”的動畫效果,接下來,進入pages/index/index.wxss檔案中,編寫樣式程式碼如下:

 1 /* “新增小程式”的動畫提示容器樣式 */
 2  
 3 .wx_tip {
 4  
 5   position: fixed;/* 固定、停靠定位 */
 6  
 7   z-index: 120;/* 垂直方向層級,數字越大越靠前 */
 8  
 9   top: 4rpx;/* 距離頂部位置 */
10  
11   right: -40px;/* 距離右側位置 */
12  
13
height: 120rpx; 14 15 } 16 17 /* “新增小程式”的動畫提示圖片樣式 */ 18 19 .wx_tip image { 20 21 height: 100%; 22 23 animation: heart 1.3s ease-in-out 2.7s infinite alternate; 24 25 /* 動畫名稱 動畫完成一個週期所花費的秒或毫秒 動畫的速度曲線 動畫何時開始(延遲開始時間) 動畫被播放的次數 動畫是否在下一週期逆向地播放 */ 26 27 } 28 29 30 /* 定義“心跳”動畫 */ 31 32 @keyframes heart
{ 33 34 /* 開始位置 */ 35 36 from { 37 38 transform: translate(0, 0); 39 40 } 41 42 /* 結束位置 */ 43 44 to { 45 46 transform: translate(0, 6px); 47 48 } 49 50 }

在上面程式碼中,關鍵點在於:動畫(animation)樣式的使用。雖然說微信小程式可以直接通過邏輯程式碼,實現一樣的動畫效果,但出於便捷和靈活性考慮,一般建議還是通過樣式程式碼來實現。

關於動畫(animation)樣式,有很多相關屬性和知識點,這裡不可能全部講解,也不是本文的重點。下面只針對最常用和核心的animation的屬性及用法做具體講解。animation語法如下:

animation: name duration timing-function delay iteration-count direction;

各引數值說明如下表所示:

表1 animation樣式引數值說明

屬性

型別

animation-name

規定需要繫結到選擇器的 keyframe 名稱。

animation-duration

規定完成動畫所花費的時間,以秒或毫秒計。

animation-timing-function

規定動畫的速度曲線。

animation-delay

規定在動畫開始之前的延遲。

animation-iteration-count

規定動畫應該播放的次數。

animation-direction

規定是否應該輪流反向播放動畫。

其中,animation-timing-function、animation-iteration-count和animation-direction引數的可選值如表2、表3和表4所示:

表2 animation-timing-function引數的可選值

屬性

型別

linear

動畫從頭到尾的速度是相同的。

ease

預設。動畫以低速開始,然後加快,在結束前變慢。

ease-in

動畫以低速開始。

ease-out

動畫以低速結束。

ease-in-out

動畫以低速開始和結束。

cubic-bezier(n,n,n,n)

在 cubic-bezier 函式中自己的值。可能的值是從 0 到 1 的數值。

表3 animation-iteration-count引數的可選值

屬性

型別

n

定義動畫播放次數的數值。

infinite

規定動畫應該無限次播放。

表4 animation-direction引數的可選值

屬性

型別

normal

預設值。動畫應該正常播放。

alternate

動畫應該輪流反向播放。

最後,需要在邏輯程式碼中,通過定時器控制“新增小程式”的動畫提示,顯示8秒後自動(隱藏)消失。進入pages/index/index.js檔案中,編寫相關程式碼如下:

Page({
 
  data: {
 
    /**
     * “新增小程式”的動畫提示是否隱藏,預設:false,顯示
     */
 
    isWebChatTipsHidden: false
 
  },
 
  onLoad: function (option) {
 
    //開啟定時器:8秒後隱藏“新增小程式”的動畫提示
 
    setTimeout(()=>{
 
      //更新頁面資料
 
      this.setData({
 
        isWebChatTipsHidden: true
 
      });
 
    },8000);
 
  }
 
});

好了,這篇技術部落格就寫到這裡,希望對你能有所幫助。高清桌布推薦微信小程式原始碼現已開源:基於2020年新版微信小程式API開發,專案小巧,但知識點很全面,有詳細的程式碼註釋、佈局技巧講解,非常適合初學者學習,並有高階功能實現(滑動停靠及吸頂、自定義導航欄及適配等)及小程式廣告位的開發,專案提供有測試介面,下載後即可執行體驗;如果感覺專案不錯,請點贊或轉發,讓更多的人能看到,謝謝!

專案開源連結https://gitee.com/hbcwxkj/os_bizhi_minapp

專案視訊課程小程式開發入門之實戰案例解析:高清桌布推薦