想要实现这从左往右出现到屏幕的过渡效果,实现不了,且不走transtion 钩子函数,不知道怎么修改。
代码如下: 手动粘贴 未整理格式。
首页:
<template>
<div class="hello">
<van-cell title="单元格" is-link to="/shopCart" />
<van-button type="primary" @click="jump">跳转</van-button>
</div>
</template>
<script>
export default {
methods:{jump () {
this.$router.push('/shopCart')
}}}
</script>
shopCart: 其中beforeEnter enter 都不走 但是按照官网的方式是好使的
<template>
<transition
name="slide"
v-on:before-enter="beforeEnter"
v-on:enter="enter"
>
1231231231
</transition>
</template>
<script>
export default {
methods:(){
beforeEnter: function (el) {
console.log(el)
},
enter () {
alert(1)
}
}
}
</script>
<style>
.slide-enter-active,
.slide-leave-active {
transition: all .5s;
}
.slide-enter,
.slide-leave-to {
transform: translate3d(100%, 0, 0);
}
</style>
Vue Transition 有两种动画模式:动画过渡和无声过渡。动画过渡可以通过钩子函数触发过渡动画,无声过渡则不会触发任何动画。如果你尝试在 Vue Transition 中使用钩子函数,并且希望它触发过渡动画,但是它没有按预期工作,可能是因为你没有正确地使用钩子函数。
要确保钩子函数在适当的时候被调用,你可以在钩子函数中添加 transitionend
事件监听器。这个事件监听器会在过渡动画完成后被触发。
例如,假设你有一个 transitionEnd
事件监听器,你可以在你的过渡函数中添加如下代码:
javascript
export default {
transitionEnd: function() {
console.log('过渡动画完成');
}
}
在这个例子中,当过渡动画完成时,transitionEnd
事件监听器会被触发,并且会在控制台打印出 "过渡动画完成"。
如果你仍然遇到问题,可能是因为你的钩子函数与过渡动画的触发顺序不同。例如,你可能在 transitionend
事件之前触发了过渡动画。在这种情况下,你可以使用 setTimeout
或 requestAnimationFrame
等方法来确保你的钩子函数在正确的时间被调用。
javascript
export default {
transitionEnd: function() {
console.log('过渡动画完成');
setTimeout(() => {
console.log('过渡动画完成');
}, 1000);
}
}
在这个例子中,transitionEnd
事件监听器在 setTimeout
事件之后被触发,从而确保它在正确的时间被调用。