vue4-过渡动画 组件

本文详细介绍了Vue.js中的过渡和动画,包括CSS过渡、CSS动画、自定义过渡类名以及JavaScript钩子的使用。重点讲解了组件的创建、全局与私有组件的区分、组件切换的多种方式及动画应用,以及组件间的数据传递和事件通信。同时,还提到了如何利用ref获取DOM元素和子组件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.vue中的过渡和动画

参考 https://cn.vuejs.org/v2/guide/transitions.html#CSS-过渡
其他第三方 CSS 动画库:Animate.css 。。。。

1.css过渡

1.1类名

在这里插入图片描述

在这里插入图片描述

1.2样式定义:

在这里插入图片描述

1.3使用方法

在这里插入图片描述

<transition name="ballTrans" >
<!-- v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterEnter" -->
<div class="ball" v-if="show" ></div>
</transition>




.ballTrans-enter{
    opacity:0;
    transform: translate(100px,100px);
}
.ballTrans-leave-to{
    opacity:0;
    transform: translate(100px,100px);
}
.ballTrans-enter-active{
    transition: cubic-bezier(1.0, 0.5, 0.8, 1.0) 1s  All;
    -webkit-transition:cubic-bezier(1.0, 0.5, 0.8, 1.0) 1s  All;
    -moz-transition: cubic-bezier(1.0, 0.5, 0.8, 1.0) 1s  All;
}
.ballTrans-leave-active{
    transition: ease 2s  All;
    -webkit-transition:ease 2s  All;
    /* -moz-transition:ease 6s  All; */
}

2.css 动画 @keyframes

.bounce-enter-active {
  animation: 名称  5s;
}
.bounce-leave-active {
  animation:名称  5s reverse;
}
@keyframes 名称   {
  0% {
    transform: scale(0);
  }
  50% {
    transform: scale(1.5);
  }
  100% {
    transform: scale(1);
  }
}

兼容性:

@-moz-keyframes mymove /* Firefox */
{
from {top:0px;}
to {top:200px;}
}

@-webkit-keyframes mymove /* Safari 和 Chrome */
{
}

@-o-keyframes mymove /* Opera */
{
}

3.自定义过渡的类名

我们可以通过以下特性来自定义过渡类名:
enter-class
enter-active-class
enter-to-class (2.1.8+)
leave-class
leave-active-class
leave-to-class (2.1.8+)

<!--  引入animate.css  --!>
<link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css">

<!--  使用方式  --!>
 <transition
    name="custom-classes-transition"
    enter-active-class="animated tada"
    leave-active-class="animated bounceOutRight"  >
    <p v-if="show">hello</p>
  </transition>

4.js钩子

4.1事件

在这里插入图片描述
当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。 见小球购物车的例子

4.2例子,小球购物车

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
51行:隐藏小球

<script>
    window.onload = function () {
        let vm = new Vue({
            el: '#app',
            data: {
                flag: false
            },
            methods: {
                // 注意:动画钩子函数的第一个参数:el,表示
                // 要执行动画的那个DOM元素,是个原生的 JS DOM 对象
                // 可以认为,el 是通过 document.getElementById('') 方式获取到的原生JS DOM对象
                beforeEnter(el) {
                    // 表示动画入场之前,此时动画还未开始,可以在其中
                    // 设置元素开始动画之前的起始样式
                    // 设置小球开始动画之前的起始位置
                    el.style.transform = 'translate(0,0)';
                },
                enter(el,done) {
                    //没有实际效果,但不可缺少,可以理解为强制动画刷新
                    el.offsetWidth;//offsetHeight、offsetLeft等都可以
                    //表示动画,开始之后的样式,可以设置小球完成动画的结束状态
                    el.style.transform = 'translate(150px,500px)';
                    el.style.transition = 'all 1s ease';

                    // 这里的 done,其实就是 afterEnter 这个函数,
                    // 也就是说:done 是 afterEnter 函数的引用
                    done();
                },
                afterEnter(el) {
                    //表示动画完成之后小球的状态

				    // 使用 flag 标识符,来表示动画的切换;
				    // Vue 把一个完整的动画,使用钩子函数,拆分为了两部分;
				    // 对flag:第一部分 false -> true ;  第二部分 true -> false
				    
				    // 这句话,第一个功能,是控制小球的显示与隐藏
				    // 第二个功能:直接跳过后半场动画,让 flag 标识符直接变为 false
				    // 当第二次再点击按钮的时候,flag = false -> true
                    this.flag = !this.flag;
                }
            }
        });
    }
</script>
--------------------- 
作者:肖ZE 
来源:优快云 
原文:https://blog.youkuaiyun.com/lucky541788/article/details/83051324 
版权声明:本文为博主原创文章,转载请附上博文链接!

在这里插入图片描述

5.其他方式

见参考链接

2.组件

在这里插入图片描述

全局

  • 创建组件方法1:
    在这里插入图片描述

  • 方式二
    在这里插入图片描述

  • 方式三在这里插入图片描述## 私有组件
    在这里插入图片描述
    在这里插入图片描述

实例和组件的data不一样!!

在这里插入图片描述

在这里插入图片描述
为什么=>为了组件不共享数据
在这里插入图片描述
在这里插入图片描述

组件切换

方法一:v-if v-else

方法二: :is=" ’ 组件名’ 或者绑定data "

在这里插入图片描述

组件切换可以加动画 mode属性

在这里插入图片描述

在这里插入图片描述
mode 能够使得动画前面的动画走了之后,后面的才出来,否则可能出现同时存在的现象。
在这里插入图片描述

组件传值

父→子 参数

在这里插入图片描述
在这里插入图片描述

传方法

在这里插入图片描述
show不能加括号,否则会标准调用后的返回值了

子→父 通过事件调用传方法

子组件:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.vue 利用ref获取dom元素 获取子组件的属性和方法

在这里插入图片描述

在这里插入图片描述

4.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值