第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

vuex實(shí)現(xiàn)路由左右切換動(dòng)畫同時(shí)嵌套路由

標(biāo)簽:
Vue.js

示例 (hash/ history) http://47.94.90.89/dist
一、安装vue-cli
1    下载安装node.js  
2    npm install -g cnpm --registry=https://registry.npm.taobao.org 换源
3    cnpm install -g vue-cli  全局安装vue-cli  已安装则不用
4    vue init webpack Vue-Project  初始化vue项目 使用webpack模板,项目名称(自带webpack)
5     cnpm install   初始化 生成node_modules
6    npm run dev        上线打包则   npm run build
二、安装vuex
1 cnpm install vuex --save-dev
2 然后在 main.js 中引入
import Vue from 'vue'
import App from './App'
import Vuex from 'vuex'
import store from './vuex/store'
Vue.use(Vuex)

三、安装完成后 配置过度动画的class
1、app.vue中

     <template>  <div id="app">     <transition :name="transitionName" >        <router-view class="child-view" ></router-view>      </transition>  </div></template><script>export default {  name: 'App',  data () {return {}},  computed: {    transitionName () {      //实时获取vuex中的类名称 并更新 transition的name属性        //  在嵌套路由时 则可以返回另一个名称       return this.$store.state.animateName    }  },}</script><style>  *{    margin: 0 ;    padding: 0;  }  body,html{    width: 100%;    height: 100%;  }#app {  font-family: 'Avenir', Helvetica, Arial, sans-serif;  width: 100%;  height: 100%;  text-align: center;  max-width: 750px;  margin: 0 auto;  overflow-x: hidden;  position: relative;}  .child-view {    transition:all .3s ease;    -webkit-transition:all .3s ease;    position: relative;    width: 100%;  }  /*slide-left用在父级过渡动画 aaa,bbb,ccc等*/  .slide-left-enter,.slide-right-leave-active {    opacity:0;    -webkit-transform:translate(100%,0);    transform:translate(100%,0);            position: absolute;            /*1 使用position: absolute; 可以使过渡连贯 且在动画的类中使用position 不用担心样式问题(应该是)      2 也可以transition 中添加 mode='out-in'    */  }  .slide-left-leave-active,.slide-right-enter {    opacity:0;    -webkit-transform:translate(-100%,0);    transform:translate(-100%,0);                    position: absolute;  }  /*slide-up用在a.vue嵌套组件过渡动画 等*/  .slide-up-enter,.slide-down-leave-active {    opacity:0;    -webkit-transform:translate(0,80%);    transform:translate(0,80%);                            position: absolute;  }  .slide-up-leave-active,.slide-down-enter {    opacity:0;    -webkit-transform:translate(0,-80%);    transform:translate(0,-80%);                            position: absolute;  }</style>

slide-up或slide-right等随便定义 vue会自动补全-enter,-leave等。

四 、配置vuex (vuex目录新建store.js)import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)const store = new Vuex.Store({  // 定义状态  state: {    //父级初始使用动画    animateName:'slide-left',            //嵌套的初始使用动画    animateNameChild:'slide-up',  },  mutations:{    //用于修改vuex的值    newAnimateName(state,val){      state.animateName=val    },    newAnimateNameChild(state,val){      state.animateNameChild=val    }  }})export default store

五、main.js中添加:

import Vue from 'vue'import App from './App'import router from './router'import Vuex from 'vuex'import store from './vuex/store'Vue.use(Vuex)Vue.config.productionTip = false// 一、执行返回动画window.addEventListener("popstate", function(e) {  //popestate 用于监听浏览器url为返回或forward  //isBack值 用于判断用户 是点击(页面链接跳转) 还是(点击浏览器返回键或点击返回按钮)  sessionStorage.isBack = true  //子动画 需放进这里  store.commit('newAnimateNameChild', 'slide-down')}, false);//二、执行前进动画router.beforeEach(function (to,form,next) {  // 如果isBack为true时,证明是用户点击了回退,执行slide-right或者slide-down动画 setTimeout(function () { //加延时使上面的popstate先走  哈希模式 则不需要加延时    let isBack = eval(sessionStorage.isBack)    if (isBack) {      //        store.commit 更新vuex中的状态使用 好处是可追踪值变化      //        更改父级路由使用的动画      store.commit('newAnimateName', 'slide-right')    }else{      store.commit('newAnimateName', 'slide-left')      store.commit('newAnimateNameChild', 'slide-up')    }    // 做完回退动画后,要设置成前进动画,否则下次打开页面动画将还是回退    sessionStorage.isBack = false    next()  },0)})此时已经侦听浏览器,手机返回键 前进后退可以动画,同时自己写的按钮因为一般是执行router.go(-1) ,这样也会触发popstate 所以也可以执行动画。还不知道哪里有bug没

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消