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原型继承之基础机制分析
Aug 26 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
javascript:;与javascript:void(0)使用介绍
Jun 05 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
AngularJS表达式讲解及示例代码
Aug 16 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
浅谈js闭包理解
Apr 01 Javascript
JavaScript使用面向对象实现的拖拽功能详解
Jun 12 Javascript
Node.js爬虫如何获取天气和每日问候详解
Aug 26 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 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的call_user_func传reference引发的思考
2010/07/23 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
php中preg_replace_callback函数简单用法示例
2016/07/21 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
jquery 3D 标签云示例代码
2014/06/12 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
详解JavaScript的策略模式编程
2015/06/24 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
2020/06/05 Javascript
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python清除字符串里非字母字符的方法
2015/07/02 Python
Python中字典的基础知识归纳小结
2015/08/19 Python
浅谈python新手中常见的疑惑及解答
2016/06/14 Python
python实现机器人行走效果
2018/01/29 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
自荐书封面下载
2013/11/29 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
保险经纪人求职信
2014/03/11 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
师范生见习报告范文
2014/11/03 职场文书
健康状况证明书
2014/11/26 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书