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 相关文章推荐
农历与西历对照
Sep 06 Javascript
Javascript中获取出错代码所在文件及行数的代码
Sep 23 Javascript
javascript实现跳转菜单的具体方法
Jul 05 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
chrome下img加载对height()的影响示例探讨
May 26 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
JavaScript模拟鼠标右键菜单效果
Dec 08 Javascript
js中string和number类型互转换技巧(分享)
Nov 28 Javascript
ajax级联菜单实现方法实例分析
Nov 28 Javascript
Angular 4.X开发实践中的踩坑小结
Jul 04 Javascript
vue2 router 动态传参,多个参数的实例
Nov 10 Javascript
分享5个好用的javascript文件上传插件
Sep 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
生成静态页面的PHP类
2006/07/15 PHP
PHP 和 COM
2006/10/09 PHP
php 保留字列表
2012/10/04 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
2015/12/14 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
用jquery与css打造个性化的单选框和复选框
2010/10/20 Javascript
解决3.01版的jquery.form.js中文乱码问题的解决方法
2012/03/08 Javascript
javascript版2048小游戏
2015/03/18 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
wx-charts 微信小程序图表插件的具体使用
2019/08/18 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
Flask框架中密码的加盐哈希加密和验证功能的用法详解
2016/06/07 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
探矿工程师自荐信
2014/01/24 职场文书
优秀护士获奖感言
2014/02/20 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
党员干部学习心得体会
2016/01/23 职场文书
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers