uniapp實(shí)現(xiàn)紅包動畫效果代碼實(shí)例(vue3)
效果演示

首先安裝CSS動畫庫animate.css依賴
yarn add animate.css
打開main.ts文件引入
import 'animate.css'
這兩張圖片放入static文件夾下

用到的圖片red1.png

用到的圖片red2.png
紅包整體主要分三部分 紅包頭部 中部 底部
<template>
<view>
<button @tap="red = true">顯示紅包</button>
</view>
<!-- 紅包特效遮罩層 -->
<view v-show="red" class="cover">
<!-- 紅包整體 -->
<view class="redBig animate__animated animate__bounceIn" :key="redIndex">
<!-- 頭部 -->
<view :animation="redHead" class="redBigHead">
<image @tap="redHeadAnimation" class="" src="/static/red1.png" mode=""></image>
</view>
<!-- 中間 -->
<view :animation="redMid" class="redBigMid">
<view class="text1">
恭喜您獲得了
</view>
<view class="text2">
100.00
</view>
<view class="text3">
紅包余額可去錢包查詢
</view>
</view>
<!-- 底部 -->
<view class="redBigBottom">
<!-- 打開紅包后展示 -->
<view @tap="redBagAnimationRenew" v-show="redBottom" class="button animate__animated animate__bounceIn">
開心收下
</view>
</view>
</view>
</view>
</template>使用uni.createAnimation()創(chuàng)建動畫實(shí)例并進(jìn)行相關(guān)操作具體查看官方文檔
<script setup lang="ts">
import {
ref,
getCurrentInstance
} from 'vue'
import {
onShow
} from '@dcloudio/uni-app'
const {
proxy
} = getCurrentInstance() as any
//紅包動畫
let red = ref(false) //紅包顯示
let redIndex = ref(0) //紅包組件刷新
onShow(() => {
let animation = uni.createAnimation()
proxy.animation = animation
})
//頭部動畫
let redHead = ref({})
function redHeadAnimation() {
proxy.animation.translateY(-300).opacity(0).step({
duration: 500,
timingFunction: 'ease-in-out',
})
redHead.value = proxy.animation.export()
redBottom.value = true
setTimeout(() => {
redMidAnimation()
}, 300)
}
//中部動畫
let redMid = ref({})
function redMidAnimation() {
proxy.animation.translateY(-120).opacity(1).step({
duration: 500,
timingFunction: 'ease-in-out',
})
redMid.value = proxy.animation.export()
}
//紅包底部按鈕顯示
let redBottom = ref(false)
//重置紅包
function redBagAnimationRenew() {
red.value = false
redBottom.value = false
redHead.value = {}
redMid.value = {}
redIndex.value++
}
</script>除了紅包底部 頭部和中部需要定位
<style lang="scss">
.cover {
position: fixed;
left: 0;
top: 0;
bottom: 0;
right: 0;
background: rgba(000, 000, 000, 0.5);
display: flex;
align-items: center;
justify-content: center;
}
.redBig {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
}
.redBigHead {
position: absolute;
z-index: 2;
image {
width: 550rpx;
height: 440rpx;
}
}
.redBigMid {
width: 508rpx;
height: 350rpx;
background-color: #fff;
border-radius: 24rpx;
display: flex;
flex-direction: column;
align-items: center;
color: #FF4545;
position: absolute;
z-index: 0;
margin-top: 260rpx;
opacity: 0;
.text1 {
margin-top: 20rpx;
font-size: 32rpx;
}
.text2 {
margin-top: 30rpx;
font-size: 70rpx;
}
.text3 {
margin-top: 30rpx;
}
}
.redBigBottom {
width: 550rpx;
height: 331rpx;
background-image: url('../../static/red2.png');
background-size: 100% 100%;
margin-top: 280rpx;
z-index: 1;
.button {
background: linear-gradient(to bottom, #FEE3AD 50%, #FEB05C);
color: #BC0D0D;
margin-left: 84rpx;
margin-right: 84rpx;
padding-top: 30rpx;
padding-bottom: 30rpx;
border-radius: 100rpx;
text-align: center;
margin-top: 150rpx;
}
}
</style>總結(jié)
到此這篇關(guān)于uniapp實(shí)現(xiàn)紅包動畫效果的文章就介紹到這了,更多相關(guān)uniapp紅包動畫效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vuejs在v-for中,利用index來對第一項添加class的方法
下面小編就為大家分享一篇Vuejs在v-for中,利用index來對第一項添加class的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
Vue3.x源碼調(diào)試的實(shí)現(xiàn)方法
這篇文章主要介紹了Vue3.x源碼調(diào)試的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
餓了么UI中el-tree樹節(jié)點(diǎn)選中高亮的兩種常用方式(highlight-current屬性)
最近新做的項目有用到Element-UI tree組件,下面這篇文章主要給大家介紹了關(guān)于餓了么UI中el-tree樹節(jié)點(diǎn)選中高亮的兩種常用方式(highlight-current屬性),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
說說Vue.js中的functional函數(shù)化組件的使用
這篇文章主要介紹了說說Vue.js中的functional函數(shù)化組件的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02

