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 相关文章推荐
JQuery一种取同级值的方式(比如你在GridView中)
Mar 15 Javascript
表单元素与非表单元素刷新区别详细解析
Nov 06 Javascript
文本域光标操作的jQuery扩展分享
Mar 10 Javascript
js的[defer]和[async]属性
Nov 24 Javascript
了不起的node.js读书笔记之node的学习总结
Dec 22 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 Javascript
jQuery中$.ajax()方法参数解析
Oct 22 Javascript
AngularJS报错$apply already in progress的解决方法分析
Jan 30 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
详谈for循环里面的break和continue语句
Jul 20 Javascript
JavaScript递归函数解“汉诺塔”算法代码解析
Jul 05 Javascript
vue print.js打印支持Echarts图表操作
Nov 13 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
PHP设计模式 注册表模式
2012/02/05 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
载入进度条 效果
2006/07/08 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
解决jquery submit()提交表单提示:f[s] is not a function
2013/01/23 Javascript
js jquery获取随机生成id的服务器控件的三种方法
2013/07/11 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
vue 过滤器filter实例详解
2018/03/14 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
微信小程序实现留言板(Storage)
2018/11/02 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
python类中super()和__init__()的区别
2016/10/18 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
pyinstaller打包找不到文件的问题解决
2020/04/15 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
python能否java成为主流语言吗
2020/06/22 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
爱国演讲稿500字
2014/05/04 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
保险公司增员口号
2015/12/25 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技