前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >40. Vue组件切换动画以及mode效果设置

40. Vue组件切换动画以及mode效果设置

作者头像
Devops海洋的渔夫
修改2020-07-06 09:42:50
2K0
修改2020-07-06 09:42:50
举报
文章被收录于专栏:Devops专栏Devops专栏

前言

上一篇使用component元素实现组件切换,但是没有切换的动画效果。那么可以参考官网的例子,实现一下组件切换的动画,以及mode效果设置。

官网说明:多个组件的过渡

多个组件的过渡简单很多 - 我们不需要使用 key attribute。相反,我们只需要使用动态组件:

代码语言:javascript
复制
<transition name="component-fade" mode="out-in">
  <component v-bind:is="view"></component>
</transition>
代码语言:javascript
复制
new Vue({
  el: '#transition-components-demo',
  data: {
    view: 'v-a'
  },
  components: {
    'v-a': {
      template: '<div>Component A</div>'
    },
    'v-b': {
      template: '<div>Component B</div>'
    }
  }
})
代码语言:javascript
复制
.component-fade-enter-active, .component-fade-leave-active {
  transition: opacity .3s ease;
}
.component-fade-enter, .component-fade-leave-to
/* .component-fade-leave-active for below version 2.1.8 */ {
  opacity: 0;
}

从上面官网的例子中,写这个组件切换的动画效果例子,主要由以下几个步骤写起来,如果单纯这样看一个最终写完的示例,可能不太清楚里面的道理。

步骤如下:

  • 编写使用component切换组件的功能,完成基本的切换效果
  • 使用transition包括component组件,并命名namecomponent-fade
  • css中编写component-fade入场、出场的动画效果
  • 最后,加上动画的模式mode

下面,我再写一个示例,一步步来演示看看。

示例

1.编写使用component切换组件的功能,完成基本的切换效果
代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <!--  导入vue.js库  -->
        <script src="lib/vue.js"></script>

    </head>
    <body>

        <div id="app1">

            <a href="" @click.prevent=" view='login' ">登陆</a>
            <a href="" @click.prevent=" view='register' ">注册</a>

            <!-- 使用component设置组件切换 -->
            <component :is="view"></component>

        </div>

        <script>        
            // 创建登陆组件
            Vue.component('login',{
                template:'<h1>登陆组件</h1>'
            })

            // 创建注册组件
            Vue.component('register',{
                template:'<h1>注册组件</h1>'
            })

            // 创建第一个Vue的实例
            var vm1 = new Vue({
                el: '#app1',
                data: {
                    view: "", // 设置切换组件的注册名称
                },
            })

        </script>

    </body>
</html>

浏览器显示如下:

  • 点击登陆按钮
  • 点击注册按钮

可以看到上面已经实现好了组件切换。

2.使用transition包括component组件,并命名namecomponent-fade
3.在css中编写component-fade入场、出场的动画效果

此时打开浏览器查看动画效果,如下:

两个组件的切换因为位置上下占用,导致一个不平滑的过渡效果。下面的【注册组件】要等到【登陆组件】向右移动消失之后,【注册组件】才会上移。

如果想要两个内容平滑从左到右的变化,那么下面就可以设置mode来实现。

4.加上动画的模式mode

mode设置中可以设置out-inin-out,这里我先设置out-in查看效果如下:

在设置了modeout-in之后,组件在切换的时候,将会等待【注册组件】消失了之后,才会开始执行【登陆组件】的动画。

那么如果设置in-out呢?

如果使用in-out,那么则会先让新的组件先进入,然后再让旧的组件移除,这个效果并不平滑。所以一般是设置out-in

更多精彩原创Devops文章,快来关注我的Devops社群吧:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 官网说明:多个组件的过渡
    • 示例
      • 1.编写使用component切换组件的功能,完成基本的切换效果
      • 2.使用transition包括component组件,并命名name为component-fade
      • 3.在css中编写component-fade入场、出场的动画效果
      • 4.加上动画的模式mode
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档