【发布时间】:2020-03-23 15:12:09
【问题描述】:
我正在使用Vue.js 和transitions。
这是我的组件。
<main id="main-content" class="t-center" role="main">
<transition :name="!phone ? 'slide-right' : 'slide-left'" mode="out-in">
<keep-alive>
<component :is="stepComponent" />
</keep-alive>
</transition>
</main>
这是我的.scss
.fade-enter-active,
.fade-leave-active {
transition: opacity .3s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
.slide-left-enter-active,
.slide-right-enter-active,
.slide-up-enter-active,
.slide-left-leave-active,
.slide-right-leave-active,
.slide-up-leave-active {
transition: transform .2s, opacity .2s;
}
.slide-left-enter,
.slide-right-enter,
.slide-up-enter,
.slide-left-leave-to,
.slide-right-leave-to,
.slide-up-leave-to {
opacity: 0;
}
.slide-left-enter {
transform: translateX(100vw);
}
.slide-left-leave-to {
transform: translateX(-100vw);
}
.slide-right-enter {
transform: translateX(-100vw);
}
.slide-right-leave-to {
transform: translateX(100vw);
}
.slide-up-enter {
transform: translateY(10px);
}
.slide-up-leave-to {
transform: translateY(-10px);
}
现在,当stepComponent 更改时会发生什么,另一个组件出现,旧组件从右到左逐渐消失,新组件从右到左出现。但问题是仅仅一秒钟或几毫秒,就会出现一个垂直滚动条,当新组件到达最终位置时,该垂直滚动条就会被删除。
只有当我在 chrome 上测试它时才会出现垂直滚动条(响应模式)。如果我在与响应式相同的屏幕尺寸上对其进行测试,但未激活响应式模式,则不会出现垂直滚动条,一切都很好。
为什么会出现垂直滚动条? overflow:hidden 没有帮助。
【问题讨论】:
-
试图自己解决这个问题,似乎父组件 div 将需要溢出:仅在过渡期间隐藏。你知道了吗?过渡是从右还是左?
标签: javascript html css vue.js vuejs2