vue过度动画,设置了top值动画不生效

期望效果: 元素从隐藏到可见时,从下往上动画
可是发现当给这个元素设置了top属性时,这个动画无效
可是不设置top值的话,动画完了,就回到top0了,
请问这该怎么办呢?

.fade-enter-active {
  transition: all .5s;
  top: -300px;
  
}
.fade-enter {
  opacity: 0;
  top: -200px;
}
阅读 3.2k
1 个回答

demo:

<!DOCTYPE html>
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style type="text/css">
.box {
  position: absolute;
  left: 0;
  top: 0;
  width: 200px;
  height: 200px;
  background-color: pink;
}
button {
  margin-top: 600px;
}
.fade-enter-active, .fade-leave-active {
  transition: all .5s;
  
}
.fade-enter, .fade-leave-to {
  opacity: 0;
  top: 200px;
}
  </style>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>

<body>
  <div id="app">
    <transition name="fade">
      <div class="box" v-if="show">{{name}}</div>
    </transition>
    <button @click="show=!show">click</button>
  </div>
</body>
<script>
new Vue({
  el: '#app',
  data: {
    name: 11,
    show: false
  }
})
</script>
<script>

</script>


</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题