最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp實(shí)現(xiàn)紅包動(dòng)畫(huà)效果代碼實(shí)例(vue3)

 更新時(shí)間:2024年01月22日 15:37:35   作者:X_JinCheng  
uniapp作為一種基于Vue.js的前端框架,實(shí)現(xiàn)了一套代碼多端運(yùn)行的理念,成為了眾多開(kāi)發(fā)者的首選,下面這篇文章主要給大家介紹了關(guān)于uniapp實(shí)現(xiàn)紅包動(dòng)畫(huà)效果的相關(guān)資料,需要的朋友可以參考下

效果演示

首先安裝CSS動(dòng)畫(huà)庫(kù)animate.css依賴

yarn add animate.css

打開(kāi)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">
                    紅包余額可去錢(qián)包查詢
                </view>
            </view>
            <!-- 底部 -->
            <view class="redBigBottom">
                <!-- 打開(kāi)紅包后展示 -->
                <view @tap="redBagAnimationRenew" v-show="redBottom" class="button animate__animated animate__bounceIn">
                    開(kāi)心收下
                </view>
            </view>
        </view>
    </view>
</template>

使用uni.createAnimation()創(chuàng)建動(dòng)畫(huà)實(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
    //紅包動(dòng)畫(huà)
    let red = ref(false) //紅包顯示 
    let redIndex = ref(0) //紅包組件刷新
    onShow(() => {
        let animation = uni.createAnimation()
        proxy.animation = animation
    })


    //頭部動(dòng)畫(huà)
    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)
    }
    //中部動(dòng)畫(huà)
    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)紅包動(dòng)畫(huà)效果的文章就介紹到這了,更多相關(guān)uniapp紅包動(dòng)畫(huà)效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue購(gòu)物車(chē)插件編寫(xiě)代碼

    vue購(gòu)物車(chē)插件編寫(xiě)代碼

    這篇文章主要為大家詳細(xì)介紹了vue購(gòu)物車(chē)插件的編寫(xiě)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 詳解VUE單頁(yè)應(yīng)用骨架屏方案

    詳解VUE單頁(yè)應(yīng)用骨架屏方案

    這篇文章主要介紹了詳解VUE單頁(yè)應(yīng)用骨架屏方案,詳細(xì)的介紹了什么是骨架屏以及是憲法方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 從0搭建vue3組件庫(kù)Input組件

    從0搭建vue3組件庫(kù)Input組件

    這篇文章主要介紹了從0搭建vue3組件庫(kù)Input組件,每個(gè)功能的實(shí)現(xiàn)代碼都做了精簡(jiǎn),方便大家快速定位到核心邏輯,接下來(lái)就開(kāi)始對(duì)這些功能進(jìn)行實(shí)例代碼講解,需要的朋友可以參考下
    2022-11-11
  • vue 打包后的文件部署到express服務(wù)器上的方法

    vue 打包后的文件部署到express服務(wù)器上的方法

    vue是目前最流行的前端框架,今天要介紹的是如何利用vue+webpack+express的方式進(jìn)行前后端分離的開(kāi)發(fā),下面通過(guò)本文給大家分享vue 打包后的文件部署到express服務(wù)器上的方法,感興趣的朋友一起看看吧
    2017-08-08
  • 詳解Vscode中使用Eslint終極配置大全

    詳解Vscode中使用Eslint終極配置大全

    這篇文章主要介紹了詳解Vscode中使用Eslint終極配置大全,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 在Vue 中使用Typescript的示例代碼

    在Vue 中使用Typescript的示例代碼

    這篇文章主要介紹了在Vue 中使用Typescript的示例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • vue組件傳值的11種方式總結(jié)

    vue組件傳值的11種方式總結(jié)

    這篇文章主要介紹了vue組件傳值的11種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue+drf+第三方滑動(dòng)驗(yàn)證碼接入的實(shí)現(xiàn)

    vue+drf+第三方滑動(dòng)驗(yàn)證碼接入的實(shí)現(xiàn)

    這篇文章要給大家介紹的是vue和drf以及第三方滑動(dòng)驗(yàn)證碼接入的實(shí)現(xiàn),下文小編講詳細(xì)講解該內(nèi)容,感興趣的小伙伴可以和小編一起來(lái)學(xué)習(xí)奧
    2021-10-10
  • Vue之Pinia狀態(tài)管理

    Vue之Pinia狀態(tài)管理

    這篇文章主要介紹了Vue中Pinia狀態(tài)管理,Pinia開(kāi)始于大概2019年,其目的是設(shè)計(jì)一個(gè)擁有 組合式 API 的 Vue 狀態(tài)管理庫(kù),Pinia本質(zhì)上依然是一個(gè)狀態(tài)管理庫(kù),用于跨組件、頁(yè)面進(jìn)行狀態(tài)共享,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • vue跨域處理方式(vue項(xiàng)目中baseUrl設(shè)置問(wèn)題)

    vue跨域處理方式(vue項(xiàng)目中baseUrl設(shè)置問(wèn)題)

    這篇文章主要介紹了vue跨域處理方式(vue項(xiàng)目中baseUrl設(shè)置問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

隆子县| 台东市| 柳河县| 新竹市| 勃利县| 保山市| 罗源县| 同仁县| 临武县| 崇明县| 石泉县| 东海县| 岑巩县| 固安县| 河北省| 烟台市| 上高县| 仪征市| 阳曲县| 台前县| 马山县| 阿勒泰市| 成都市| 互助| 交城县| 通榆县| 遵化市| 元阳县| 甘洛县| 乐昌市| 延边| 永靖县| 海门市| 博湖县| 庆阳市| 得荣县| 唐山市| 洛宁县| 秀山| 庆阳市| 丰镇市|