删除的时候没有缓慢返回原位的过渡效果
来源:2-5 列表动画
im镇辉
2021-11-11 15:46:45
相关代码:
相关代码:<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>lesson</title> <style> .v-enter-from { opacity: 0; transform: translateY(-30px); } .v-enter-active { transition: all 0.5s ease-in; } .v-enter-to { opacity: 1; transform: translateY(0px); } .v-leave-from { opacity: 1; transform: translateY(0px); } .v-leave-active { transition: all 0.5s ease-in; } .v-leave-to { opacity: 0; transform: translateY(30px); } /* 当其他的列表项移动的时候,原有数据跟着移动 */ .v-move { transition: all 0.5s ease-in; } .list-item { display: inline-block; margin-right: 10px; } </style> <script src="https://unpkg.com/vue@next"></script> </head> <body> <div id="root"> <transition-group> <div class="list-item" v-for="item in list" :key='item'>{{item}}</div> </transition-group> <button @click="handleAddClick">增加</button> <button @click="handleDelClick">删除</button> </div> <script> // 列表动画的实现 const app = Vue.createApp({ data() { return { list: [1, 2, 3] } }, methods: { handleAddClick() { this.list.unshift(this.list.length + 1); }, handleDelClick(){ // this.list.shift(this.list[this.list.length-1]); this.list.shift(this.list[2]); } } }) const vm = app.mount('#root') </script> </body> </html>
问题描述:
增加会往右挤,但是删除不会往左过渡挤回来
1回答
同学你好,建议给.v-leave-active添加position:absolute属性,如下:
提示:这种方法只适合从前往后删除元素或者是从中间删除元素,如果从最后一个元素开始删除是没有过渡效果的。
祝学习愉快!
相似问题