【Vue3】router-view跳转渐变过渡

【Vue3】router-view跳转渐变过渡

前言

是否感觉使用element-ui-plus组件搭建的后台在router-view跳转页面的时候,内容部分出现的太过突兀?

不妨试试transition过渡

1、transition无法包裹router-view?

在Vue2的版本,如果想给router-view一个过渡渐变,可以将transition包裹在外面。

但是如今Vue3的版本,这样写会报错!

如何改善这种情况呢?

查询vue router官方文档发现可以这样写

<router-view v-slot="{ Component }">
  <transition name="fade">
    <component :is="Component" />
  </transition>
</router-view>

也就是使用Vue3中的component来写

2、css样式

是不是发现网上各种vue的transition的css样式都无法使用?原因很简单

在vue3中,原本的v-enter和v-leave都被丢弃了,取而代之的是v-enter-from和v-leave-from,我们将css中的v-enter和v-leave后面都加一个-from就可以解决问题

css样式举例:

 /* 渐变设置 */
.fade-enter-from, .fade-leave-to {
  transform: translateX(20px);
  opacity: 0;
}
.fade-enter-to, .fade-leave-from {
  opacity: 1;
}
.fade-enter-active {
  transition: all 0.7s ease;
}
.fade-leave-active {
   transition: all 0.3s cubic-bezier(1, 0.6, 0.6, 1);
}

3、切换过渡模式

这也是重要的一步,如果不设置过渡模式,会造成部分页面转化的卡顿!

mode被称为“过渡模式”,取值有:

  • in-out:新元素先进行过渡,完成之后当前元素离开
  • out-in:当前元素先进行过渡,完成之后新元素进入

使用样例:

<router-view v-slot="{ Component }">
  <transition name="fade" mode="out-in">
    <component :is="Component" />
  </transition>
</router-view>

4、给component设置key

这是最关键的一步,如果没有实现这一步,那么上述的操作都是白费功夫

文档中有如下描述:

由于Vue机制的原因,为了性能会使用同一个元素。也就是说你切换时并不会更换掉整个元素,而是替换掉该元素中的内容的值,以此来切换,所以在这里需要添加key

我们为了保证key的唯一性,可以使用routepath来作为key

<router-view v-slot="{ Component,route  }">
    <transition name="fade" mode="out-in">
        <component :is="Component" :key="route.path"/>
    </transition>
</router-view>

5、演示

最终代码:

image-20220411180541135

image-20220411180548384

效果如下:

202204110615282

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Vue3中,可以使用`router-view`来实现路由跳转。你可以通过不同的方式来进行跳转。 1. 使用`router-link`组件进行跳转。可以在模板中使用`<router-link to="/login">去登录</router-link>`来定义跳转链接。 2. 在方法中使用`$router.push`进行跳转。在组件的方法中,可以通过`this.$router.push('/home')`来进行跳转。 3. 在Composition API中使用`useRouter`钩子进行跳转。在`<script setup>`部分引入`useRouter`,并使用`let router = useRouter()`来获取`router`对象。然后可以定义一个方法如`const goHome = () => { router.push('home') }`来进行跳转。 此外,你还可以在`router-view`中使用`v-slot`来定义过渡效果。例如,可以这样写: ```html <router-view v-slot="{ Component }"> <transition name="fade"> <component :is="Component" /> </transition> </router-view> ``` 以上是Vue3中使用`router-view`进行路由跳转的几种方式。希望能对你有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [vue3 路由跳转&router-view](https://blog.csdn.net/violetta521/article/details/124832356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【Vue3】router-view跳转渐变过渡](https://blog.csdn.net/woodwhale/article/details/124105578)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值