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 序列化对象实现代码
Dec 18 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
jQuery 判断图片是否加载完成方法汇总
Aug 10 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
全面了解JavaScript的数据类型转换
Jul 01 Javascript
JavaScript中的this引用(推荐)
Aug 05 Javascript
vuejs绑定class和style样式
Apr 11 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
JavaScript实现的反序列化json字符串操作示例
Jul 18 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 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
一个图片地址分解程序(用于PHP小偷程序)
2014/08/23 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP会员找回密码功能的简单实现
2016/09/05 PHP
JavaScript 对Cookie 操作的封装小结
2009/12/31 Javascript
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
2012/09/16 Javascript
js中浮点型运算BUG的解决方法说明
2014/01/06 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
Bootstrap实现导航栏的2种方式
2016/11/28 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
python psutil库安装教程
2018/03/19 Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
2018/05/16 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
Django实现图片上传功能步骤解析
2020/04/22 Python
python map比for循环快在哪
2020/09/21 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
Python3+Appium安装及Appium模拟微信登录方法详解
2021/02/16 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
sort命令的作用和用法
2013/08/25 面试题
应届医学毕业生求职信分享
2013/12/02 职场文书
给公司的建议书范文
2014/05/13 职场文书
社区服务标语
2014/07/01 职场文书
先进事迹演讲稿
2014/09/01 职场文书
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL
vue elementUI批量上传文件
2022/04/26 Vue.js
GO中sync包自由控制并发示例详解
2022/08/05 Golang