Vue 跳转切换页面时左右滑动动画

这篇博客介绍了如何在Vue.js应用中利用Vue Router的meta信息定义页面层级,并通过监听路由变化来判断前进或后退状态,从而实现不同的页面过渡动画。具体实现包括在路由配置中设置meta属性,使用watch监听$router变化来判断路径层级,以及定义slide-left和slide-right过渡动画样式。

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

1.给各个页面定义层级,在切换路由时判断用户是进入哪一层页面,如果用户进入更高层级那么做前进动画,如果用户退到低层级那么做后退动画

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

  const routes = [
    {
      path: '/',
      name: 'search',
	  meta:{index:0},//meta对象的index用来定义当前路由的层级,由小到大,由低到高
      component: ()=> import('@/views/Search.vue')
    },
    {
      path: '/search2',
      name: 'search2',
	  meta:{index:1},
      component: ()=> import('@/views/Search2.vue')
    },
    {
      path: '/showlist',
      name: 'showlist',
	  meta:{index:3},
      component: ()=> import('@/views/ShowList.vue')
    }
  ]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

2.监控路由跳转,判断切换页面之间的层级关系,并以此来判断路由前进或者后退

<template>
	<div>

		<transition :name="transitionName">
			<router-view></router-view>
		</transition>
		
	</div>
</template>

<script>
	export default {
		data() {
			return {
				transitionName: ''
			}
		},
		watch: { //使用watch 监听$router的变化
			$route(to, from) {
				//如果to索引大于from索引,判断为前进状态,反之则为后退状态
				if (to.meta.index > from.meta.index) {
					//设置动画名称
					this.transitionName = 'slide-left';
				} else {
					this.transitionName = 'slide-right';
				}
			}
		}
	}
</script>

3.编写slide-left 和 slide-right 动画

<style>
	.slide-right-enter-active,
	.slide-right-leave-active,
	.slide-left-enter-active,
	.slide-left-leave-active {
		will-change: transform;
		transition: all 500ms;
		position: absolute;
	}

	.slide-right-enter {
		opacity: 0;
		transform: translate3d(-100%, 0, 0);
	}

	.slide-right-leave-active {
		opacity: 0;
		transform: translate3d(100%, 0, 0);
	}

	.slide-left-enter {
		opacity: 0;
		transform: translate3d(100%, 0, 0);
	}

	.slide-left-leave-active {
		opacity: 0;
		transform: translate3d(-100%, 0, 0);
	}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值