【发布时间】:2019-01-20 11:28:39
【问题描述】:
我有一个打开“编辑个人资料”屏幕的个人资料列表。该屏幕从左侧滑入。当我选择一个配置文件时,如果已经选择了一个屏幕,我希望它先滑出,更改选定的配置文件数据,然后再滑入。
现在发生的情况是:当我第一次选择一个元素时,屏幕会滑入。当我更改所选元素时,屏幕会停留并且不会滑出和滑入。
这是一个 gif,显示它现在的行为:
我的代码是:
Vue方法:
editProfile: function (index){
// this.editingProfile = false;
this.setProfile(index);
this.editingProfile = true;
}
HTML 视图:
<transition name="fade" mode="out-in">
<div v-if="editingProfile" id="edit-profile">
<input placeholder="Profile Name" v-model="synced.profiles[synced.selectedProfile].name">
</div>
</transition>
CSS:
.fade-enter-active, .fade-leave-active {
transition: all .2s;
/* transform:translateX(0); */
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
transform:translateX(-100%);
}
如何在更改配置文件时正确滑出然后重新滑入?
【问题讨论】:
-
你是否正确切换
this.editingProfiletrue falsey -
如果我将其切换为 false 然后再次为 true,则不会发生任何事情。
-
我认为您需要一组面板,而不是您调整其内容的单个面板。否则 Vue 将尝试回收该面板并忽略转换。您想要更多带有项目进出动画的列表过渡。
-
在
editProfile里面,你可以先设置为false,然后在this.$nextTick里面,在setTimeout(()=>{}, 200)里面再设置为true,请查看fiddle。正如@zero298 提到的,组转换应该是滑入/滑出的解决方案。 -
如果真假切换滑入和滑出是否正常工作,您可以尝试使用单个元素,即 profile1。单击垂直列表元素之一时,您还会调用 editProfile 吗
标签: javascript vue.js vuejs2 css-transitions