11<template >
22 <!--  https://www.cnblogs.com/mmzuo-798/p/10712009.html --> 
33 <div  class =" vue-route-transition" 
4-  <transition  :name =" pageDirection" 
5-  <keep-alive  v-show =" $route.meta.keepAlive" 
6-  <router-view  :kkk =" pageDirection" id =" mmnn" router-view >
4+  <!--  <transition :name="state.pageDirection" @leave="setRouterMap">
5+  <keep-alive v-if="this.keepAlive===true && $route.meta.keepAlive!==false"> 
6+  <router-view></router-view> 
7+  </keep-alive> 
8+  <router-view v-else></router-view> 
9+  </transition> -->  
10+  <!--  <transition :name="state.pageDirection" @leave="setRouterMap">
11+  <keep-alive> 
12+  <router-view 
13+  v-if="keepAlive === true && $route.meta.keepAlive !== false" 
14+  ></router-view> 
715 </keep-alive> 
816 </transition> 
9-  <transition  :name =" pageDirection" 
17+  <transition :name="state. pageDirection" @leave="setRouterMap "> 
1018 <router-view 
11-  :kkk =" pageDirection" 
12-  id =" xxoo" 
13-  v-show =" $route.meta.keepAlive === false" 
19+  v-if="keepAlive === false || $route.meta.keepAlive === false" 
1420 ></router-view> 
15-  </transition >
16-  <!--  <transition :name="state.pageDirection" @leave="setRouterMap">
17-  <div class="abc" v-if="$route.meta.keepAlive !== false" key="xx"> 
18-  <keep-alive> 
19-  <router-view></router-view> 
20-  </keep-alive> 
21-  </div> 
22-  <div class="abc" v-if="$route.meta.keepAlive === false" key="oo"> 
23-  <router-view></router-view> 
24-  </div> 
2521 </transition> -->  
22+  <transition 
23+  v-on:before-enter =" beforeEnter" 
24+  v-on:enter =" enter" 
25+  v-on:after-enter =" afterEnter" 
26+  v-on:before-leave =" beforeLeave" 
27+  v-on:leave =" leave" 
28+  v-on:after-leave =" afterLeave" 
29+  v-bind:css =" false" 
30+  >
31+  <keep-alive >
32+  <router-view 
33+  v-if =" keepAlive === true && $route.meta.keepAlive !== false" 
34+  ></router-view >
35+  </keep-alive >
36+  </transition >
37+  <transition 
38+  v-on:before-enter =" beforeEnter" 
39+  v-on:enter =" enter" 
40+  v-on:after-enter =" afterEnter" 
41+  v-on:before-leave =" beforeLeave" 
42+  v-on:leave =" leave" 
43+  v-on:after-leave =" afterLeave" 
44+  v-bind:css =" false" 
45+  >
46+  <router-view 
47+  v-if =" keepAlive === false || $route.meta.keepAlive === false" 
48+  ></router-view >
49+  </transition >
50+  <!--  <transition-group :name="state.pageDirection" @leave="setRouterMap">
51+  <keep-alive :key="1234"> 
52+  <router-view :key="2134" v-if="this.keepAlive===true && $route.meta.keepAlive!==false"></router-view> 
53+  </keep-alive> 
54+  <router-view :key="234" v-if="this.keepAlive===false || $route.meta.keepAlive===false"></router-view> 
55+  </transition-group> -->  
2656 </div >
2757</template >
2858<script >
@@ -46,7 +76,6 @@ export default {
4676 localSessionRouteChain =  []; 
4777 } 
4878 return  { 
49-  pageDirection:  " fade"  
5079 state:  { 
5180 addCount:  localSessionRouteChain .length , 
5281 routerMap:  {}, 
@@ -56,6 +85,131 @@ export default {
5685 }; 
5786 }, 
5887 methods:  { 
88+  //  -------- 
89+  //  进入中 
90+  //  -------- 
91+ 
92+  beforeEnter :  function (el ) { 
93+  //  ... 
94+  console .log (" beforeEnter"  
95+  console .log (this .state .pageDirection ); 
96+ 
97+  let  dir =  this .state .pageDirection ; 
98+  if  (dir ===  " slide-left"  
99+  //  进入 
100+  //  el.style.transform = 'translate(100%, 0)' 
101+  } else  if  (dir ===  " slide-right"  
102+  //  返回 
103+  //  el.style.transform = 'translate(-20%, 0)' 
104+  } else  { 
105+  //  fade 
106+  } 
107+ 
108+  console .log (el .style .transform ); 
109+  console .log (" -----------------"  
110+  }, 
111+  //  当与 CSS 结合使用时 
112+  //  回调函数 done 是可选的 
113+  enter :  function (el , done ) { 
114+  //  ... 
115+  console .log (" enter"  
116+  console .log (this .state .pageDirection ); 
117+  console .log (" -----------------"  
118+  //  eslint-disable-next-line no-unused-expressions 
119+  el .offsetWidth ; 
120+  let  dir =  this .state .pageDirection ; 
121+  if  (dir ===  " slide-left"  
122+  //  进入 
123+  //  el.style.transform = 'translate(0, 0)' 
124+  //  el.style.transition = 'all 0.4s' 
125+  el .style .animation  =  " pageFromRightToCenter 5000ms forwards"  
126+  el .style .zIndex  =  " 10"  
127+  el .style .boxShadow  =  "  -3px 0 5px rgba(0, 0, 0, 0.1)"  
128+  } else  if  (dir ===  " slide-right"  
129+  //  返回 
130+  //  el.style.transform = 'translate(0, 0)' 
131+  //  el.style.transition = 'transform 0.4s' 
132+  el .style .animation  =  " pageFromLeftToCenter 5000ms forwards"  
133+  el .style .zIndex  =  " 1"  
134+  } else  { 
135+  //  fade 
136+  } 
137+  setTimeout (() =>  { 
138+  done (); 
139+  }, 5000 ); 
140+  //  done() 
141+  }, 
142+  afterEnter :  function (el ) { 
143+  //  ... 
144+  console .log (" afterEnter"  
145+  console .log (this .state .pageDirection ); 
146+  console .log (" -----------------"  
147+  }, 
148+ 
149+  //  -------- 
150+  //  离开时 
151+  //  -------- 
152+ 
153+  beforeLeave :  function (el ) { 
154+  //  ... 
155+  console .log (" beforeLeave"  
156+  console .log (this .state .pageDirection ); 
157+  console .log (" -----------------"  
158+ 
159+  let  dir =  this .state .pageDirection ; 
160+  if  (dir ===  " slide-left"  
161+  //  进入 
162+  //  el.style.transform = 'translate(0, 0)' 
163+  } else  if  (dir ===  " slide-right"  
164+  //  返回 
165+  //  el.style.transform = 'translate(0, 0)' 
166+  } else  { 
167+  //  fade 
168+  } 
169+  }, 
170+  //  当与 CSS 结合使用时 
171+  //  回调函数 done 是可选的 
172+  leave :  function (el , done ) { 
173+  //  ... 
174+  console .log (" leave"  
175+  console .log (this .state .pageDirection ); 
176+  let  dir =  this .state .pageDirection ; 
177+  let  to =  this .state .routerMap .to .replace (/ \/ / g" _"  
178+  let  from =  this .state .routerMap .from .replace (/ \/ / g" _"  
179+  console .log (" setRouterMap"  
180+  console .log (" setRouterMap"  
181+  console .log (" setRouterMap"  
182+  console .log (" -----------------"  
183+  //  eslint-disable-next-line no-unused-expressions 
184+  el .offsetWidth ; 
185+  if  (dir ===  " slide-left"  
186+  //  el.style.transform = 'translate(-100%, 0)' 
187+  //  el.style.transition = 'all 0.4s' 
188+  el .style .animation  =  " pageFromCenterToLeft 5000ms forwards"  
189+  el .style .zIndex  =  " 1"  
190+  } else  if  (dir ===  " slide-right"  
191+  //  返回 
192+  //  el.style.transform = 'translate(100%, 0)' 
193+  //  el.style.transition = 'all 0.4s' 
194+  el .style .animation  =  " pageFromCenterToRight 5000ms forwards"  
195+  el .style .boxShadow  =  "  -3px 0 5px rgba(0, 0, 0, 0.1)"  
196+  el .style .zIndex  =  " 10"  
197+  } else  { 
198+  //  fade 
199+  } 
200+ 
201+  setTimeout (() =>  { 
202+  done (); 
203+  }, 5000 ); 
204+  //  done() 
205+  }, 
206+  afterLeave :  function (el ) { 
207+  //  ... 
208+  console .log (" afterLeave"  
209+  console .log (this .state .pageDirection ); 
210+  console .log (" -----------------"  
211+  }, 
212+ 
59213 addRouteChain (route ) { 
60214 console .log (" addRouteChain - " this .state .addCount ); 
61215 console .log (" addRouteChain - " localSessionRouteChain .length ); 
@@ -93,7 +247,6 @@ export default {
93247 }, 
94248 setPageDirection ({ dir, to, from }) { 
95249 this .state .pageDirection  =  dir; 
96-  this .pageDirection  =  dir; 
97250 this .state .routerMap [" to" =  to .path ; 
98251 this .state .routerMap [" from" =  from .path ; 
99252 }, 
@@ -119,48 +272,6 @@ export default {
119272 } else  { 
120273 } 
121274 } catch  (error) {} 
122-  }, 
123-  //  -------- 
124-  //  进入中 
125-  //  -------- 
126- 
127-  beforeEnter :  function (el ) { 
128-  //  ... 
129-  console .log (" beforeEnter"  
130-  }, 
131-  //  当与 CSS 结合使用时 
132-  //  回调函数 done 是可选的 
133-  enter :  function (el , done ) { 
134-  //  ... 
135-  console .log (" enter"  
136- 
137-  done (); 
138-  }, 
139-  afterEnter :  function (el ) { 
140-  //  ... 
141-  //  ... 
142-  console .log (" afterEnter"  
143-  }, 
144- 
145-  //  -------- 
146-  //  离开时 
147-  //  -------- 
148-  beforeLeave :  function (el ) { 
149-  //  ... 
150-  console .log (" beforeLeave"  
151-  }, 
152-  //  当与 CSS 结合使用时 
153-  //  回调函数 done 是可选的 
154-  leave :  function (el , done ) { 
155-  console .log (" leave"  
156- 
157-  //  ... 
158-  done (); 
159-  }, 
160-  afterLeave :  function (el ) { 
161-  console .log (" leaafterLeaveve"  
162- 
163-  //  ... 
164275 } 
165276 }, 
166277 mounted () { 
@@ -203,25 +314,22 @@ export default {
203314 }); 
204315 }, 
205316 created () { 
206-  console .log (" created😁😁😁 " this .$route .meta );  
207-  console .log (" created😁😁😁 " this .state );  
317+  // console.log(' created😁😁😁 ' , this.$route.meta) 
318+  // console.log(' created😁😁😁 ' , this.state) 
208319 }, 
209320 activated () { 
210-  console .log (" activated😁😁😁 " this .$route .meta );  
211-  console .log (" activated😁😁😁 " this .state );  
321+  // console.log(' activated😁😁😁 ' , this.$route.meta) 
322+  // console.log(' activated😁😁😁 ' , this.state) 
212323 } 
213324}; 
214325</script >
215326
216- <style  scoped></style >
217- 218- <style  scoped>
219- .abc  {
220-  position absolute ; 
327+ <style  lang="less">
328+ html ,
329+ body  {
221330 width : 100%  ; 
222331 height : 100%  ; 
223332} 
224- /*  子绝父相 */ 
225333.vue-route-transition  {
226334 position : absolute ; 
227335 width : 100%  ; 
@@ -232,9 +340,8 @@ export default {
232340 backface-visibility : hidden ; 
233341 perspective : 1000 ; 
234342} 
235- 
236343.fade-enter-active  {
237-  animation 400 ms forwards ; 
344+  animation : pageFadeIn 5000 ms forwards ; 
238345} 
239346@keyframes  pageFadeIn {
240347 from { 
@@ -245,27 +352,28 @@ export default {
245352 } 
246353} 
247354
355+ /* 路由前进,退出*/ 
356+ .slide-left-leave-active  {
357+  animation : pageFromCenterToLeft 5000ms   forwards ; 
358+  z-index : 1 ; 
359+ } 
360+ 
248361/* 路由后退,进入*/ 
249362.slide-right-enter-active  {
250-  animation 10000 ms forwards ; 
363+  animation : pageFromLeftToCenter 5000 ms forwards ; 
251364 z-index : 1 ; 
252365} 
253366
254367/* 路由后退,退出*/ 
255368.slide-right-leave-active  {
256-  animation 10000 ms forwards ; 
369+  animation : pageFromCenterToRight 5000 ms forwards ; 
257370 z-index : 10 ; 
258371 box-shadow : -3px   0  5px   rgba (0 , 0 , 0 , 0.1 ); 
259372} 
260373
261- /* 路由前进,退出*/ 
262- .slide-left-leave-active  {
263-  animation 10000ms   forwards ; 
264-  z-index 9 ; 
265- } 
266374/* 路由前进,进入*/ 
267375.slide-left-enter-active  {
268-  animation 10000 ms forwards ; 
376+  animation : pageFromRightToCenter 5000 ms forwards ; 
269377 z-index : 10 ; 
270378 box-shadow : -3px   0  5px   rgba (0 , 0 , 0 , 0.1 ); 
271379} 
@@ -288,6 +396,7 @@ export default {
288396} 
289397
290398/* 路由前进,退出*/ 
399+ 
291400@keyframes  pageFromCenterToLeft {
292401 from { 
293402 opacity : 1 ; 
0 commit comments