【发布时间】:2018-06-28 05:13:20
【问题描述】:
我正在尝试编写一个 Vue.js 过渡,它可以滑出一个元素,同时滑入另一个元素。我几乎让它工作了,但是当动画开始时元素会相互碰撞。
这是我的CodePen 和代码:
// pug/jade
#app
.elems
transition-group(name="elem")
li.elem(v-for="(elem, index) in elems"
v-if="index === currentElem"
@click="currentElem = currentElem === 0 ? 1 : 0" :key="index") {{ elem
// stylus
.elems
display: flex
align-items: center
justify-content: center
height: 100vh
position:relative
.elem
display: block
text-align: center
font-size: 30px
padding: 30px
border-radius: 20px
border: 2px solid black
user-select: none
cursor: pointer
&-enter-active, &-leave-active
transition: 1s
&-enter
transform: translateX(-100vw)
&-leave-to
transform: translateX(100vw)
// js
new Vue({
el: '#app',
data() {
return {
elems: ['hello there', 'hello yourself'],
currentElem: 0
}
}
})
【问题讨论】:
-
尝试将过渡模式设置为
out-in。将 .elem 上的显示设置为inline-block也会停止升档。 -
@btl 这几乎可以正常工作,但在动画结束时它会弹回原位。有没有办法解决这个问题?