我在使用transition实现页面的切换效果,期望的效果是当用户点击跳转时,当前页面A驻留不移动,新页面B从右往左推入,在新页面推入的过程中A始终可见,直至B将其覆盖。但是在实现过程中发现,页面A会直接消失且背景变为白色,而新页面B正常推入。
<template>
<router-view v-slot="{ Component, route }">
<transition mode="out-in" name="slide" appear>
<div :key="route?.name" style="height: 100%;width: 100%;">
<component :is="Component" />
</div>
</transition>
</router-view>
</template>
.slide-enter-from {
// position: absolute;
// left: 0;
// top: 0;
opacity: 0;
transform: translateX(100%);
}
.slide-enter-active {
transition: all 0.5s ease;
}
.slide-enter-to {
opacity: 1;
transform: translateX(0);
}
.slide-leave-from {
// position: absolute;
// left: 0;
// top: 0;
opacity: 1;
transform: translateX(0);
}
.slide-leave-active {
transition: all 0.1s ease;
}
.slide-leave-to {
opacity: 0;
transform: translateX(0);
}
移除 mode="in-out"
另外你的div可能加上position:absolute来固定位置,要不然两个页面过渡过程中会把第二个页面挤到滚动条下面。