首页 > 其他分享 >uni-app:uni-transition动画分多个step执行()

uni-app:uni-transition动画分多个step执行()

时间:2023-03-19 12:55:05浏览次数:44  
标签:app transition ani 收藏 isMoving step uni refs

一,官方文档地址:

https://uniapp.dcloud.net.cn/component/uniui/uni-transition.html

二,js代码:

<template>
    <view>
        <view class="navBarBox" style="position: fixed;bottom:60px;z-index: 1000;">
                <!-- 状态栏占位 -->
                <view class="statusBar" :style="{ paddingTop: statusBarHeight + 'px' }"></view>
                <!-- 导航栏内容 -->
                <view class="navBar" style="height:93rpx;">
                    <uni-transition ref="ani" :show="show" 
                    style="width:60rpx;height:60rpx;margin-left: 340rpx;display: flex;
        flex-direction: row;justify-content: center;align-items: center;">
                            <image class="heart" src="http://studyfile.nihonnoma.net/img/heart.png" :style="{ opacity: heartOpacity  }"  />
                    </uni-transition>
                    <image ref="fav" :src="favSrc" 
                    style="position:absolute;width:60rpx;height:60rpx;margin-left: 120rpx;display: flex;
                    flex-direction: row;justify-content: center;align-items: center;" @click="setfavorite" />
                </view>
            </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                show:true,
                favSrc:"http://studyfile.nihonnoma.net/img/heart_line.png",
                // 状态栏高度
                statusBarHeight: 60,
                heartOpacity:0,    //动画图的透明度
                isMoving:0,        //是否正在移动动画
                isFavorited:0,     //是否已收藏
            }
        },
        onl oad(option) {
              //获取手机状态栏高度
              this.statusBarHeight = uni.getSystemInfoSync()['statusBarHeight'];
        },
        methods: {
            
            //收藏或取消收藏
            setfavorite() {
               if (this.isMoving == 1) {
                   return false;
               }
               if (this.isFavorited == 1) {
                   this.unfavorite();
               } else {
                   this.favorite();
               }
            },
            //收藏
            favorite(){
                this.isMoving = 1;
               this.show = true;
               this.heartOpacity = 1;
               this.reset();

                setTimeout(()=>{
                    this.explode();
                },50);
                setTimeout(()=>{
                    this.favSrc = "http://studyfile.nihonnoma.net/img/heart.png";
                    this.isMoving = 0;
                    this.isFavorited = 1;
                    this.heartOpacity = 0;
                },1050);
            },
            
            //取消收藏
            unfavorite(){
                this.isMoving = 1;
                this.favSrc = "http://studyfile.nihonnoma.net/img/heart_line.png";
                
                uni.showToast({
                    title:"已取消收藏",
                    duration:500,
                })
                setTimeout(()=>{
                    this.isMoving = 0;
                    this.isFavorited = 0;
                },500);
            },
            
            //重置动画元素
            reset() {
                console.log(this.$refs.ani);
                this.$refs.ani.step({
                    translateY: '0rpx',
                    scale:1,
                    opacity: '1'
                }, {
                    transformOrigin: '50% 50%',
                    duration: 1
                });
                
                this.$refs.ani.run()
            },
            
            //动画
            explode() {
                //向上移动
                this.$refs.ani.step({
                   translateY: '-800rpx',
                }, {
                   timingFunction: 'ease-in',
                   duration: 500
                });
                //变大和透明
                this.$refs.ani.step({
                    scale:3,
                    opacity: '0'
                }, {
                   timingFunction: 'linear',
                   duration: 500
                });
                //执行
                this.$refs.ani.run()
            }
            
        }
    }
</script>

<style>
.heart{
    width:60rpx;
    height:60rpx;
}
</style>

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/
         或: https://gitee.com/liuhongdi

说明:作者:刘宏缔 邮箱: [email protected]

三,查看效果

说明:收藏的心形向上滑动后再变大变透明

四,查看hbuilderx的版本: 

标签:app,transition,ani,收藏,isMoving,step,uni,refs
From: https://www.cnblogs.com/architectforest/p/17232857.html

相关文章

  • uni App 获取手机号,授权获取经纬度,openid,unionid 选择收贷地址,
    //获取用户手机号getPhoneNumber(e){//getPhoneNumber:failnopermission说明没有开通权限,需要企业账号。......
  • 【转载】中考一轮复习-云凌shapphire
    课程学习课程视频链接:https://www.bilibili.com/video/BV1RY411971Z文件链接文件转载自up主云凌的百度网盘文件摘要:中考数学一轮复习之二次函数-云凌Sapphire【讲义......
  • unity 在toolbar处添加按钮
      usingSystem;usingSystem.Reflection;usingUnityEngine;usingUnityEditor;usingUnityEngine.UIElements;[InitializeOnLoad]publicstaticclassCruT......
  • python单元测试unittest
    快速上手#被测代码defadd_func(a,b):returna+b#测试代码importunittestclassMyTest(unittest.TestCase):deftest_add_func(self):#......
  • 简单记事本app4
    ——新增便签——activity_note_add.xml界面设计<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/androi......
  • 简单记事本app5
    ListView部分相关代码packagedb;importandroid.content.Context;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.BaseAdapter;import......
  • 简单记事本app6
    连接数据库packagedb;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandro......
  • 简单记事本app7
    CRDU部分(不完全)packagedb;importandroid.content.Context;importandroid.database.Cursor;importandroid.database.sqlite.SQLiteDatabase;importjava.text.SimpleDa......
  • 打卡APP之定闹钟
    packagecom.example.daka;importandroid.app.Activity;importandroid.app.AlarmManager;importandroid.app.PendingIntent;importandroid.app.TimePickerDialog......
  • 简单记事本app2
    ——注册——activity_login.xml注册页面设计<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"......