vue-router实现webApp切换页面动画效果代码

发布时间 - 2026-01-11 01:18:21    点击率:

vue-router实现webApp切换效果

演示效果

快速集成

1.复制PageTransittion.vue到项目目录。2.修改router配置。

Router.prototype.goBack = function () {
 this.isBack = true
 window.history.go(-1)
}
const router = new Router({
 routes: [
  {
   path: '/',
   name: 'PageTransition', 
   component: PageTransition, // 引入页面切换组件
   children: [{
    path: '',
    component: Index // 父路由访问页面,例如,访问www.aaa.com/ 显示的是Index组件
   }, {
    path: '/pageA',
    component: PageA // 子路由组件 例如,访问www.aaa.com/pageA 显示为PageA
   }, {
    path: '/pageB',
    component: PageB // 子路由组件 例如,访问www.aaa.com/pageB 显示为PageB
   }]
  }
 ]
})

方案实现

记录页面状态

要实现页面前进后台动画,首先必须知道页面状态(即是页面是进入下一页,还是后退),我们可以通过改写router.Go方法记录回退状态,页面如果需要回退时,调用

$router.go(-1) 

修改router/index.vue

// 增强原方法,好处是旧的业务模块不需要任何变动
Router.prototype.go = function () {
 this.isBack = true
 window.history.go(-1)
}

// 或者你可以新建一个方法
Router.prototype.goBack = function () {
 this.isBack = true
 this.go(-1)
}

当new Router时,实例就包含go/goBack方法。

监听路由变化

使用嵌套路由的方式引入子页面,监听根路由的update钩子做相应操作。

beforeRouteUpdate (to, from, next) {
 // 如果isBack为true时,证明是用户点击了回退,执行slide-right动画
  let isBack = this.$router.isBack
  if (isBack) {
   this.transitionName = 'slide-right'
  } else {
   this.transitionName = 'slide-left'
  }
  // 做完回退动画后,要设置成前进动画,否则下次打开页面动画将还是回退
  this.$router.isBack = false
   next()
}

动画效果

通过transition执行动画

 <transition :name="transitionName">
  <router-view class="child-view"></router-view>
 </transition>

css代码

.child-view {
 position: absolute;
 width:100%;
 transition: all .8s cubic-bezier(.55,0,.1,1);
}
.slide-left-enter, .slide-right-leave-active {
 opacity: 0;
 -webkit-transform: translate(50px, 0);
 transform: translate(50px, 0);
}
.slide-left-leave-active, .slide-right-enter {
 opacity: 0;
 -webkit-transform: translate(-50px, 0);
 transform: translate(-50px, 0);
}

路由设置

router/index.js

const router = new Router({
 routes: [
  {
   path: '/',
   name: 'PageTransition',
   component: PageTransition,
   children: [{
    // 该路由为父路由的默认路由
    path: '',
    component: Index
   }, {
    path: '/pageA',
    component: PageA
   }, {
    path: '/pageB',
    component: PageB
   }]
  }
 ]
})

github地址:https://github.com/zhengguorong/pageAinimate

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # router  # 切换动画  # 切换  # 页面  # vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法  # 详解使用vue-router进行页面切换时滚动条位置与滚动监听事件  # vue实现app页面切换动画效果实例  # Vue 路由切换时页面内容没有重新加载的解决方法  # 基于Vue实现页面切换左右滑动效果  # 使用vue-router切换页面时  # 获取上一页url以及当前页面url的方法  # vue 路由页面之间实现用手指进行滑动的方法  # vue中选项卡点击切换且能滑动切换功能的实现代码  # vue实现滑动切换效果(仅在手机模式下可用)  # vue实现页面切换滑动效果  # 的是  # 你可以  # 下一页  # 我们可以  # 即是  # 做完  # 大家多多  # 设置成  # 新建一个  # 不需要任何  # 为父  # 下次  # PageTransition  # component  # routes  # const  # path  # pageA 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速辨别茅台真假?关键步骤解析  详解阿里云nginx服务器多站点的配置  如何在Windows虚拟主机上快速搭建网站?  如何快速生成可下载的建站源码工具?  Android Socket接口实现即时通讯实例代码  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  微信小程序 wx.uploadFile无法上传解决办法  详解Huffman编码算法之Java实现  制作电商网页,电商供应链怎么做?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  黑客如何通过漏洞一步步攻陷网站服务器?  如何破解联通资金短缺导致的基站建设难题?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  如何选择可靠的免备案建站服务器?  Laravel如何创建自定义Facades?(详细步骤)  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何实现javascript表单验证_正则表达式有哪些实用技巧  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  ,交易猫的商品怎么发布到网站上去?  怎样使用JSON进行数据交换_它有什么限制  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  如何在阿里云虚拟主机上快速搭建个人网站?  手机软键盘弹出时影响布局的解决方法  音乐网站服务器如何优化API响应速度?  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  Linux系统运维自动化项目教程_Ansible批量管理实战  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel如何使用Livewire构建动态组件?(入门代码)  详解MySQL数据库的安装与密码配置  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  大连网站制作公司哪家好一点,大连买房网站哪个好?  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  Laravel如何处理CORS跨域请求?(配置示例)  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何快速完成中国万网建站详细流程?  jQuery 常见小例汇总  Laravel怎么实现验证码(Captcha)功能