• Vue内置组件TransitionGroup详细介绍


     是一个内置组件,用于对 v-for 列表中的元素或组件的插入、移除和顺序改变添加动画效果

    和  的区别

     支持和  基本相同的 props、CSS 过渡 class 和 JavaScript 钩子监听器,但有以下几点区别:

    • 默认情况下,它不会渲染一个容器元素。但你可以通过传入 tag prop 来指定一个元素作为容器元素来渲染。

    • 过渡模式在这里不可用,因为我们不再是在互斥的元素之间进行切换。

    • 列表中的每个元素都必须有一个独一无二的 key attribute。

    • CSS 过渡 class 会被应用在列表内的元素上,而不是容器元素上。

    TIP

    当在 DOM 内模板中使用时,组件名需要写为 

    进入 / 离开动画

    这里是  对一个 v-for 列表添加进入 / 离开动画的示例:

    1. <TransitionGroup name="list" tag="ul">
    2. <li v-for="item in items" :key="item">
    3. {{ item }}
    4. li>
    5. TransitionGroup>
    1. .list-enter-active,
    2. .list-leave-active {
    3. transition: all 0.5s ease;
    4. }
    5. .list-enter-from,
    6. .list-leave-to {
    7. opacity: 0;
    8. transform: translateX(30px);
    9. }

    在任意位置添加一项移除任意位置上的一项

    • 1
    • 2
    • 3
    • 4
    • 5

    移动动画

    上面的示例有一些明显的缺陷:当某一项被插入或移除时,它周围的元素会立即发生“跳跃”而不是平稳地移动。我们可以通过添加一些额外的 CSS 规则来解决这个问题:

    1. .list-move, /* 对移动中的元素应用的过渡 */
    2. .list-enter-active,
    3. .list-leave-active {
    4. transition: all 0.5s ease;
    5. }
    6. .list-enter-from,
    7. .list-leave-to {
    8. opacity: 0;
    9. transform: translateX(30px);
    10. }
    11. /* 确保将离开的元素从布局流中删除
    12. 以便能够正确地计算移动的动画。 */
    13. .list-leave-active {
    14. position: absolute;
    15. }

    现在它看起来好多了,甚至对整个列表执行洗牌的动画也都非常流畅:

    添加删除重新排序

    • 1
    • 2
    • 3
    • 4
    • 5

    渐进延迟列表动画

    通过在 JavaScript 钩子中读取元素的 data attribute,我们可以实现带渐进延迟的列表动画。首先,我们把每一个元素的索引渲染为该元素上的一个 data attribute:

    1. <TransitionGroup
    2. tag="ul"
    3. :css="false"
    4. @before-enter="onBeforeEnter"
    5. @enter="onEnter"
    6. @leave="onLeave"
    7. >
    8. <li
    9. v-for="(item, index) in computedList"
    10. :key="item.msg"
    11. :data-index="index"
    12. >
    13. {{ item.msg }}
    14. li>
    15. TransitionGroup>

    接着,在 JavaScript 钩子中,我们基于当前元素的 data attribute 对该元素的进场动画添加一个延迟。

    1. function onEnter(el, done) {
    2. gsap.to(el, {
    3. opacity: 1,
    4. height: '1.6em',
    5. delay: el.dataset.index * 0.15,
    6. onComplete: done
    7. })
    8. }
  • 相关阅读:
    下载stm32f4xx标准外设库
    html中如何写一个提示框,css画一个提示框
    ttkefu子账号提示已被关闭或过期是什么一样,该怎么处理呢?
    【JavaScript】制作一个老虎机抽奖页面
    基于惯性权值非线性递减的改进粒子群算法 - 附代码
    Docker容器内数据备份到系统本地
    node.js共享输液检测系统毕业设计源码131105
    数据结构(五):哈希表及面试常考的算法
    开发知识点-Apache Axis2框架
    基于微信小程序的manster云音乐小程序
  • 原文地址:https://blog.csdn.net/nibabaoo/article/details/137857825