Vue3基于路由路径path的切换动画

适用于APP或小程序内嵌H5场景。

// CSS魔改自:https://segmentfault.com/a/1190000041592406

// 移动端覆盖内容处理,下面为移动端补丁
router.beforeEach((to, from) => {
  const toDepth = to.path.split('/').length
  const fromDepth = from.path.split('/').length
  to.meta.transition = toDepth > fromDepth ? 'scale-slide-right' : 'scale-slide-left'
})
<div class="h-[calc(100vh-56px)] relative">
  <RouterView
    class="absolute"
    v-slot="{ Component, route }"
    @generate="console.log">
    <Transition :name="route.meta.transition as string">
      <KeepAlive>
        <Component :is="Component" />
      </KeepAlive>
    </Transition>
  </RouterView>
</div>
.scale-slide-right-enter-active,
.scale-slide-right-leave-active {
  transition: all 0.3s ease;
}

.scale-slide-right-enter-from {
  left: 100%;
}

.scale-slide-right-enter-to {
  left: 0%;
}

.scale-slide-right-leave-from {
  transform: scale(1);
}

.scale-slide-right-leave-to {
  transform: scale(0.8);
}

.scale-slide-left-enter-active,
.scale-slide-left-leave-active {
  transition: all 0.3s ease;
}

.scale-slide-left-enter-from {
  left: -100%;
}

.scale-slide-left-enter-to {
  left: 0%;
}

.scale-slide-left-leave-from {
  transform: scale(1);
}

.scale-slide-left-leave-to {
  transform: scale(0.8);
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值