<transition :name="transitionName">
<router-view class="transitionBody"></router-view>
</transition>
data() {
return {
transitionName: 'transitionLeft',
$route: this.$route,
};
},
watch: {
$route: (to, from) => {
const arr = ['/pageA', '/pageB', '/pageC', '/pageD'];
const compare = arr.indexOf(to.path) > arr.indexOf(from.path);
this.transitionName = compare ? 'transitionLeft' : 'transitionRight';
}
},
.transitionBody{
transition: all 0.2s linear;
}
.transitionLeft-enter,
.transitionRight-leave-active {
-webkit-transform: translate(100%, 0);
transform: translate(100%, 0);
}
.transitionLeft-leave-active,
.transitionRight-enter {
-webkit-transform: translate(-100%, 0);
transform: translate(-100%, 0);
}