我在使用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);
}
把 appear 属性去掉试试?
给页面离开设置动画,用 transition-delay
延迟播放动画。
stackblitz
要实现你描述的页面切换效果,其中旧页面A在新页面B推入时保持可见直至被覆盖,你需要确保页面A在动画过程中不会被Vue Router的<router-view>
组件自动移除。Vue Router在切换路由时,默认会移除旧的<router-view>
组件内容并添加新的内容,但是通过使用<transition>
组件和:key
绑定,你可以控制这个行为。
在你的代码中,你已经正确地使用了:key
绑定来区分不同的路由,但是你可能需要确保CSS样式允许页面A在动画过程中保持可见。此外,mode="out-in"
意味着旧组件先完成过渡,新组件再开始过渡。对于你的需求,这可能不是必需的,因为你想让两个组件同时动画。
首先,请移除多余的mode="out-in"
属性(它只应该出现一次)。然后,确保你的CSS样式允许页面A在动画期间可见。你的CSS代码看起来基本正确,但是可能需要添加一些额外的样式来确保页面A在动画期间不被隐藏或覆盖。
这里是一个更新后的示例:
<template>
<router-view v-slot="{ Component, route }">
<transition name="slide" appear>
<div :key="route.name" style="position: relative; height: 100%; width: 100%; overflow: hidden;">
<component :is="Component" />
</div>
</transition>
</router-view>
</template>
<style scoped>
.slide-enter-active, .slide-leave-active {
transition: all 0.5s ease;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.slide-enter-from {
transform: translateX(100%);
}
.slide-enter-to, .slide-leave-from {
transform: translateX(0);
}
.slide-leave-to {
transform: translateX(-100%); /* 或者其他值,根据你的需要 */
}
</style>
在这个例子中,我移除了一个重复的mode="out-in"
属性,并添加了position: relative;
到包含<component>
的<div>
上。同时,我也将.slide-leave-to
的transform
值更改为-100%
,这样页面A就会向左移动而不是向右移动(根据你的描述,你可能想要这样的效果)。
注意,使用overflow: hidden;
可以防止在动画期间出现内容溢出。这对于确保页面A在动画期间不会显示在页面B的下方是很重要的。
最后,请确保你的Vue Router配置正确,并且<router-view>
组件被放置在正确的位置。如果问题仍然存在,请检查你的Vue版本和Vue Router版本是否与你的代码兼容。
本文向大家介绍Android fragment实现多个页面切换效果,包括了Android fragment实现多个页面切换效果的使用技巧和注意事项,需要的朋友参考一下 现在的APP首页大部分屏幕的下方显示一行Tab标签选项,点击不同的标签就可以切换到不同的界面。如下图: 我们之前都是用TabHost来实现,但是殊不知,TabHost并非是那么的简单,它的可扩展性非常的差,不能随意地定制Tab项显示
Vue 提供了多种方式支持动画过渡效果。例如在各个过渡阶段应用 CSS 类,提供钩子函数使用 JS 操作 DOM,使用第三方 CSS/JS 动画库等。 如果对 Vue 中内置的 transition 机制还不了解,可以阅读 官方的介绍。 在模板项目中,主要使用了最简单的应用 CSS 类的方式完成动画效果。 具体实现 在模板项目中,页面切换时,会有左右滑动效果。 具体表现为打开新页面时左滑展示,返回
本文向大家介绍Android开发中ViewPager实现多页面切换效果,包括了Android开发中ViewPager实现多页面切换效果的使用技巧和注意事项,需要的朋友参考一下 ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入“Android-support-v4.jar” 首先必须知道:要使用ViewPager,必须要使用
整个页面有2个部分, 第一部分如上图蓝色标注,蓝色部分高度大于浏览器高度, 滑动蓝色部分往上,当蓝色部分的底部和浏览器的底部的保持一致高度的时候, 希望蓝色部分固定住,类似sticky的效果, 继续滑动页面往上,白色部分会直接往上走,盖在蓝色部分往上滑动, 请问下这个效果有什么关键字吗
本文向大家介绍js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果),包括了js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js实现的鼠标滚轮滚动切换页面效果的方法。分享给大家供大家参考,具体如下: 运行效果截图如下: 具体代码如下: 更多关于jQuery特效相关内容感兴趣的读者可查看本站专题:《jQuery
本文向大家介绍Vue.js组件tabs实现选项卡切换效果,包括了Vue.js组件tabs实现选项卡切换效果的使用技巧和注意事项,需要的朋友参考一下 今天给大家分享一个小颖自己写的vue组件,因为小颖也才接触vue没多久,如果有什么不足的地方,希望大家提出来,小颖加以改正.以下就是具体如何实现tabs啦。 调用示例: 实现tabs: 效果图: 本文已被整理到了《Vue.js前端组件学习教程》,欢迎大