VUE:视图更改时的过渡元素
VUE :Transition elements on view change
我遇到了看似最简单的问题,但无法解决。
我的目标很简单:
在视图更改时,我想转换新视图的一些元素。不是整个视图,因为我想保留背景,所以 <router-view>
全局转换在这里不起作用(顺便说一句,它有效)。
这是我现在拥有的代码的简化版本:
<template>
<div class="fixedBackground">
<transition name="slideIn">
<div>
<h1>Title</h1>
<p>Subtitle</p>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'whatever'
}
</script>
<style scoped>
.slideIn-enter-active, .slideIn-leave-active {
transition: transform .3s ease, opacity .3s ease;
}
.slideIn-enter, .slideIn-leave-to {
transform: translateX(-10vw);
opacity: 0;
}
.slideIn-enter-to, .slideIn-leave {
transform: translateX(0);
opacity: 1;
}
</style>
原样的转换没有任何效果。
我尝试在 App.vue 中观看路线以将活动页面作为道具传递并在登陆页面时激活转换,但它没有用。
现在我正在尝试更复杂的解决方案,感觉就像我错过了真正简单的方法:(根据我阅读的代码,我应该可以正常工作。
TLDR:我需要在视图更改时转换一些元素,但不是整个路由器视图。
您需要在过渡中使用 v-if 或 v-show,一个数据变量,在此示例中为 "show",以切换可见性,然后在创建时切换 "show" 变量,或者任何其他操作,例如从 API 返回的数据等
<template>
<div class="fixedBackground">
<transition name="slideIn">
<div v-show="show">
<h1>Title</h1>
<p>Subtitle</p>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'whatever',
data () {
return {
show: false
}
},
mounted () {
this.show = true;
}
}
</script>
<style scoped>
.slideIn-enter-active, .slideIn-leave-active {
transition: transform .3s ease, opacity .3s ease;
}
.slideIn-enter, .slideIn-leave-to {
transform: translateX(-10vw);
opacity: 0;
}
.slideIn-enter-to, .slideIn-leave {
transform: translateX(0);
opacity: 1;
}
</style>
我遇到了看似最简单的问题,但无法解决。
我的目标很简单:
在视图更改时,我想转换新视图的一些元素。不是整个视图,因为我想保留背景,所以 <router-view>
全局转换在这里不起作用(顺便说一句,它有效)。
这是我现在拥有的代码的简化版本:
<template>
<div class="fixedBackground">
<transition name="slideIn">
<div>
<h1>Title</h1>
<p>Subtitle</p>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'whatever'
}
</script>
<style scoped>
.slideIn-enter-active, .slideIn-leave-active {
transition: transform .3s ease, opacity .3s ease;
}
.slideIn-enter, .slideIn-leave-to {
transform: translateX(-10vw);
opacity: 0;
}
.slideIn-enter-to, .slideIn-leave {
transform: translateX(0);
opacity: 1;
}
</style>
原样的转换没有任何效果。 我尝试在 App.vue 中观看路线以将活动页面作为道具传递并在登陆页面时激活转换,但它没有用。 现在我正在尝试更复杂的解决方案,感觉就像我错过了真正简单的方法:(根据我阅读的代码,我应该可以正常工作。
TLDR:我需要在视图更改时转换一些元素,但不是整个路由器视图。
您需要在过渡中使用 v-if 或 v-show,一个数据变量,在此示例中为 "show",以切换可见性,然后在创建时切换 "show" 变量,或者任何其他操作,例如从 API 返回的数据等
<template>
<div class="fixedBackground">
<transition name="slideIn">
<div v-show="show">
<h1>Title</h1>
<p>Subtitle</p>
</div>
</transition>
</div>
</template>
<script>
export default {
name: 'whatever',
data () {
return {
show: false
}
},
mounted () {
this.show = true;
}
}
</script>
<style scoped>
.slideIn-enter-active, .slideIn-leave-active {
transition: transform .3s ease, opacity .3s ease;
}
.slideIn-enter, .slideIn-leave-to {
transform: translateX(-10vw);
opacity: 0;
}
.slideIn-enter-to, .slideIn-leave {
transform: translateX(0);
opacity: 1;
}
</style>