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+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
Ajax同步与异步传输的示例代码
Nov 21 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
jQuery中ajax的get()方法用法实例
Dec 26 Javascript
jquery Easyui快速开发总结
Aug 20 Javascript
设置点击文本框或图片弹出日历控件的实现代码
May 12 Javascript
Vue.js实现移动端短信验证码功能
Mar 29 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
May 01 Javascript
vue组件生命周期详解
Nov 07 Javascript
JS实现处理时间,年月日,星期的公共方法示例
May 31 Javascript
Layui table field初始化加载时进行隐藏的方法
Sep 19 Javascript
Angular8 简单表单验证的实现示例
Jun 03 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 时间计算问题小结
2009/01/04 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
如何让您的中波更粗更长 - 中波框形天线制作
2021/03/10 无线电
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
JavaScript里实用的原生API汇总
2015/05/14 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
python 用下标截取字符串的实例
2018/12/25 Python
Django错误:TypeError at / 'bool' object is not callable解决
2019/08/16 Python
python带参数打包exe及调用方式
2019/12/21 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Django实现celery定时任务过程解析
2020/04/21 Python
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
新员工入职感言
2014/02/01 职场文书
质量月口号
2014/06/20 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
交通事故调解协议书
2015/05/20 职场文书
工作态度怎么写
2015/06/25 职场文书
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android