Vue 系统组件 <TransitionGroup> 简介

<TransitionGroup>动画过渡组件

用于v-for列表中元素或组件的插入、移动、顺序改变的过渡效果。

它应用于对象不是根元素,而是所有子元素,且所有子元素必需指定key属性。

它和属性、用法和<Transition>基本相同,不同的是过渡效果对象差异

<TransitionGroup>在<Transition>属性事件上,增加了二个属性:

tag = [String 必需] 指定要渲染的元素容器

move-class = [String 可选] 用于自定义过渡期间被应用的 CSS class。 在模板中使用 kebab-case,例如 move-class="xxx"

 

与第三方集成示例: 

<template>
    <button @click="add">增加一项</button>
    <button @click="reduce">减少一项</button>
    <transition-group
        tag="ul"
        enter-active-class="animate__animated animate__flipOutY"
        leave-active-class="animate__animated animate__bounceOutRight">
        <li class="lstyle" v-for="(item,index) in lists" :key="item">{{item}}</li>
    </transition-group>
</template>

<script setup>
    import {
        ref
    } from 'vue'

    import 'animate.css'
    import $array from '@/common/js/array.js'
    import $string from '@/common/js/string.js'
    import $number from '@/common/js/number.js'
    const lists = ref(['q', 'e', 'u', 'o', 't', 'w'])

    function add() {
        var l = $string.rndChars(1, 1)
        var rnd = $number.rndInt(0, lists.value.length - 1)
        var newArr = $array.insert(lists.value, rnd, l)
        lists.value = [].concat(newArr)
    }

    function reduce() {
        var rnd = $number.rndInt(0, lists.value.length - 1)
        lists.value.splice(rnd, 1)
    }
</script>

<style scoped>
    .lstyle {
        margin-top: 10px;
        border: 1px solid #ddd;
        height: 35px;
        line-height: 35px;
        border-radius: 20px;
        text-indent: 30px;
    }
</style>

 

posted @ 2022-09-21 09:35  1024记忆  阅读(764)  评论(0编辑  收藏  举报