拥有和<Transition>除了 mode以外的相同的属性,还具有特有属性
如果未定义,则渲染为片段 fragment
建议使用,可以节省一个DOM节点,如声明为 tag = "ul"
用于自定义过渡期间被应用的 CSS class;用于覆盖默认的 .v-move 类,从而实现自定义的移动过渡效果
在模板中使用 kebab-case,例如 move-class = "xxx"
<template> <div> <h3>待办事项</h3> <div class="ipt-box"> <input type="text" required v-model="todo" @keydown.enter="insertItem"> <button @click="insertItem">增加</button> </div> <template v-if="arr.length"> <div class="item"> <p>序号</p> <p>待办事项</p> <p>操作</p> </div> <TransitionGroup name="list" tag="ul"> <li class="item" v-for="(item, ind) in arr" :key="item.id" :style="`--delay: ${ind}`"> <p>{{ ind }}</p> <p>{{ item }}</p> <button class="del-btn" @click="deleteItem(ind)">删除</button> </li> </TransitionGroup> </template> <template v-else>暂无记录</template> </div> </template>
内联变量 --delay:依次延时触发
v-move:对移动中的元素应用的过渡,专用 于<TransitionGroup>
v-leave-active:声明为绝对定位,保证删除不会跳跃
.v-move, .v-enter-active, .v-leave-active { transition: 0.4s ease-in-out calc(var(--delay)*0.1s); } .v-leave-active { position: absolute; } .v-enter-from, .v-leave-to { opacity: 0; transform: translateX(30px); }