VUE学习:vue基础21————动画03:多种类型过渡

本文介绍了Vue动画的三种关键应用:多标签间的out-in和in-out过渡,组件之间的无缝切换,以及列表渲染时的过渡效果。通过实例演示了如何在Vue项目中实现这些过渡,并提供了相应的CSS样式和组件配置。
摘要由CSDN通过智能技术生成

提示:
VUE学习:vue基础21————动画03:多种类型过渡

VUE学习:vue基础21————动画03:多种类型过渡


前言

本文学习Vue的动画相关内容。


提示:以下是本篇文章正文内容,下面案例可供参考

动画

多种类型过渡

多标签过渡

过渡模式:

in-out表示新元素先过渡,完成后当前元素再消失。

out-in当前元素先过渡,新元素再进入。

<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script src="vue.js"></script>
   <style>
      .v-enter-active,.v-leave-active{
         transition: all 2s;
      }
      .v-enter,.v-leave-to{
         opacity: 0;
      }
   </style>
</head>
<body>
<div id="app">
   <transition mode="out-in">
      <!--过渡元素中的if和else中一定要设置不同的key去要求Vue来强制刷新,否则只能切换显示,不能把过渡效果展示出来-->
      <button type="button" v-if="show" @click="show=false" key="show">显示</button>
      <button type="button" v-else @click="show=true" key="hide">隐藏</button>
   </transition>
</div>
</body>
<script>
   let vm = new Vue({
      el: "#app",
      data: {
         show:true
      },
      methods: {}
   });
</script>

在这里插入图片描述

多组件过渡

<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script src="vue.js"></script>
   <style>
      .v-enter-active,.v-leave-active{
         transition: all 1s;
      }
      .v-enter,.v-leave-to{
         opacity: 0;
      }
      .v-enter-to,.v-leave{
         opacity: 1;
      }
   </style>
</head>
<body>
<div id="app">
   <button type="button" @click="view='news'">新闻</button>
   <button type="button" @click="view='info'">信息</button>
   <transition mode="out-in">
      <component :is="view"></component>
   </transition>
</div>
</body>
<script>

   let news={
      template:'<div><h3>这里是新闻页</h3></div>'
   }
   let info={
      template: '<div><h3>信息发布</h3></div>'
   }
   let vm = new Vue({
      el: "#app",
      data: {
         view:'news'
      },
      methods: {},
      components:{news,info}
   });
</script>

在这里插入图片描述

列表过渡

transition-group是专门针对列表渲染的过渡效果使用的,只是名字上略有不同,和transition的使用上一致

<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script src="vue.js"></script>
   <style>
      .v-enter-active,.v-leave-active{
         transition: all 1s;
      }
      .v-enter,.v-leave-to{
         opacity: 0;
         transform: translateY(20px);
      }
      b{
         margin-right: 10px;
         display: inline-block;
      }
   </style>
</head>
<body>
<div id="app">
   <div>
      <button type="button" @click="add">添加数字</button>
      <button type="button" @click="remove">删除数字</button>
   </div>
   <div>
      <!--transition-group是专门针对列表渲染的过渡效果使用的,只是名字上略有不同,和transition的使用上一致-->
      <transition-group>
         <b v-for="num in arr" :key="num">{{num}}</b>
      </transition-group>
   </div>
</div>
</body>

<script>
   let vm = new Vue({
      el: "#app",
      data: {
         arr:[1,2,3,4,5,6,7],
         nextNum:8
      },
      methods: {
         add(){
            this.arr.push(this.nextNum++);
         },
         remove(){
            let index=Math.floor(this.arr.length/2);
            this.arr.splice(index,1);
         }
      }
   });
</script>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值