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 解疑
Nov 11 Javascript
js 判断checkbox是否选中的实现代码
Nov 23 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
Aug 16 Javascript
实例代码讲解jquery easyui动态tab页
Nov 17 Javascript
微信小程序 同步请求授权的详解
Aug 04 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
layui 表格的属性的显示转换方法
Aug 14 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
Vue通过配置WebSocket并实现群聊功能
Dec 31 Javascript
vue+elementUi 实现密码显示/隐藏+小图标变化功能
Jan 18 Javascript
关于JavaScript数组去重的一些理解汇总
Sep 10 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
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
php的zip解压缩类pclzip使用示例
2014/03/14 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
获取DOM对象的几种扩展及简写
2006/10/09 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
[00:44]华丽开场!DOTA2勇士令状带来全新对阵画面
2019/05/15 DOTA
举例讲解Python中装饰器的用法
2015/04/27 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
python进程和线程用法知识点总结
2019/05/28 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
Python descriptor(描述符)的实现
2020/11/15 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
日本最新流行服饰网购:Nissen
2016/07/24 全球购物
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
关于奉献的演讲稿
2014/05/21 职场文书
亮剑精神观后感
2015/06/05 职场文书
环境卫生标语
2015/08/03 职场文书
董事长秘书工作总结
2015/08/14 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers