Vue <transition-group> 列表的 添加/删除元素 过渡案例2

这个示例展示了如何在 Vue 中使用 `<transition-group>` 组件实现列表元素的添加和删除过渡动画。通过点击按钮,动态添加和删除列表项,同时应用淡入淡出的效果。过渡动画通过 CSS 样式控制,包括进入和离开时的透明度和位置变化。
摘要由CSDN通过智能技术生成
<!-- Vue <transition-group> 列表的 添加/删除元素 过渡案例2 -->
<template>
  <div class="page">
    <transition-group name="fade" tag="ul">
      <li v-for="(item,index) in items" :key="item.id" class="list-item">
        <span>{{item.txt}}-{{item.id}}</span>
        <button @click="addRow">add</button>
        <button @click="deleteRow(index)">delete</button>
      </li>
    </transition-group>
  </div>
</template>

<script>
  export default {
    name: 'HelloWorld',
    data() {
      return {
        items: [
          {id: 0, txt: '内容'},
          {id: 1, txt: '内容'},
          {id: 2, txt: '内容'}
        ],
      }
    },
    computed: {
      num: {
        /*
        * 计算属性默认只有getter,不过如果有需要也可以提供一个setter,写法如下:
        * */
        get() {
          return this.items.length
        },
        set(newValue) {
          console.log(newValue);
        }
      }
    },
    methods: {
      addRow() {
        // 如果计算属性num不设置setter,++this.num会报错,无法赋值
        this.items.splice(this.items.length, 0, {id: ++this.num, txt: '内容'})
      },
      deleteRow(id) {
        this.items.splice(id, 1)
      }
    }
  }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
  .list-item {
    margin-bottom: 10px;

    button {
      margin-left: 8px;
    }
  }
  .fade-enter-active, .fade-leave-active {
    transition: all 0.5s;
  }
  .fade-enter {
    opacity: 0;
    transform: translateY(30px);
  }
  .fade-leave-to {
    opacity: 0;
    transform: translateX(30px);
  }
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值