VUE单页面切换动画代码(全网最好的切换效果)


Posted in Javascript onOctober 31, 2019

我就废话不多说了,直接上代码吧!

// 视图切换动画逻辑
let history = window.sessionStorage
let historyCount = history.getItem('count') * 1 || 0
function routerTransition (to, from) {
 const toIndex = history.getItem(to.name)
 const fromIndex = history.getItem(from.name)
 let direction = 'forward'
 if (toIndex) {
 if (toIndex >= fromIndex || !fromIndex) {
  store.commit('UPDATE_DIRECTION', {direction})
 } else {
  direction = 'reverse'
  store.commit('UPDATE_DIRECTION', {direction})
 }
 } else {
 ++historyCount
 history.setItem('count', historyCount)
 to.path !== '/' && history.setItem(to.name, historyCount)
 direction = 'forward'
 store.commit('UPDATE_DIRECTION', {direction})
 }
}
router.beforeEach(function (to, from, next) {
 routerTransition(to, from)
 next()
})
<template>
 <div id="app">
  <div v-transfer-dom >
  <loading :show="isLoading" :transition="''"></loading>
  </div>
  <transition :name="viewAnimate">
    <router-view v-if="isNetworkOnline"></router-view>
    <no-network v-if="!isNetworkOnline"></no-network>
  </transition>
 </div>
</template>

<script>
import '@/assets/iconfont/iconfont.css'
import { Loading, TransferDom } from 'vux'
import {mapState} from 'vuex'
import noNetwork from '@/page/system/callback/noNetwork.vue'
export default {
 directives: {
 TransferDom
 },
 computed: {
 ...mapState({
  isLoading: state => state.isLoading,
  direction: state => state.direction,
  isNetworkOnline: state => state.isNetworkOnline
 })
 },
 // dynamically set transition based on route change
 watch: {
 '$route' (to, from) {
  if (this.direction === 'forward') {
  this.viewAnimate = 'slide-left'
  } else {
  this.viewAnimate = 'slide-right'
  }
 }
 },
 data () {
 return {
  viewAnimate: 'slide-left'
 }
 },
 components: {
 Loading,
 noNetwork
 }
}
</script>

<style lang="less">
@import '~vux/src/styles/reset.less';
@import '~vux/src/styles/close.less';
@import '~@/styles/common.less';
body {
 background-color: #fbf9fe;
}
@keyframes slideInLeft {
 from {
  transform: translate3d(100%, 0, 0);
  opacity: 1;
 }
 to {
  transform: translate3d(0, 0, 0);
    opacity: 1;
 }
}
@keyframes slideInRight {
 from {
  transform: translate3d(-100%, 0, 0);
  opacity: 1;
 }
 to {
  transform: translate3d(0, 0, 0);
    opacity: 1;
 }
}
@keyframes slideLeftOut {
 from {
  transform: translate3d(0, 0, 0);
  opacity: 0;
 }
 to {
  transform: translate3d(100%, 0, 0);
  opacity: 0;
 }
}
@keyframes slideRightOut {
 from {
  transform: translate3d(0, 0, 0);
  opacity: 0;
 }
 to {
  transform: translate3d(-100%, 0, 0);
  opacity: 0;
 }
} 
.slide-left-enter-active {
 animation: slideInLeft .3s forwards;
 z-index:5;
}

.slide-left-leave-active {
 animation: slideLeftOut .3s forwards;
 z-index:3;
}
 .slide-right-enter-active {
 animation: slideInRight .3s forwards;
 z-index:5;
}

.slide-right-leave-active {
 animation: slideRightOut .3s forwards;
 z-index:3;
} 
</style>

以上这篇VUE单页面切换动画代码(全网最好的切换效果)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
由JavaScript技术实现的web小游戏(不含网游)
Jun 12 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 Javascript
js控制分页打印、打印分页示例
Feb 08 Javascript
javascript简单实现命名空间效果
Mar 06 Javascript
javascript实现修改微信分享的标题内容等
Dec 11 Javascript
javascript实现图片循环渐显播放的方法
Feb 24 Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 Javascript
javascript数组克隆简单实现方法
Dec 16 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
JS实现的base64加密解密操作示例
Apr 18 Javascript
详解js模板引擎art template数组渲染的方法
Oct 09 Javascript
JS页面动态绘图工具SVG,Canvas,VML介简介
Oct 16 Javascript
js new Date()实例测试
Oct 31 #Javascript
一起写一个即插即用的Vue Loading插件实现
Oct 31 #Javascript
Vue 使用beforeEach实现登录状态检查功能
Oct 31 #Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 #Javascript
vue-router之实现导航切换过渡动画效果
Oct 31 #Javascript
使用vue-router切换页面时实现设置过渡动画
Oct 31 #Javascript
Vue防止白屏添加首屏动画的实例
Oct 31 #Javascript
You might like
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
php ios推送(代码)
2013/07/01 PHP
laravel安装和配置教程
2014/10/29 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
showModelDialog弹出文件下载窗口的使用示例
2013/11/19 Javascript
配置Grunt的Task时通配符支持和动态生成文件名问题
2015/09/06 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
[01:00:14]DOTA2官方TI8总决赛纪录片 真视界True Sight
2019/01/16 DOTA
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
python pygame模块编写飞机大战
2018/11/20 Python
华为校园招聘上机笔试题 扑克牌大小(python)
2020/04/22 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
jupyter notebook插入本地图片的实现
2020/04/13 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
后勤主管岗位职责
2014/03/01 职场文书
入党思想汇报怎么写
2014/04/03 职场文书
竞选卫生委员演讲稿
2014/04/28 职场文书
物流管理专业自荐信
2014/06/23 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
python保存大型 .mat 数据文件报错超出 IO 限制的操作
2021/05/10 Python
铁头也玩根德 YachtBoy YB-230......
2022/04/05 无线电