首页 > 其他分享 >vue3 TransitionGroup 组件使用示例

vue3 TransitionGroup 组件使用示例

时间:2024-12-02 21:23:28浏览次数:7  
标签:TransitionGroup 示例 text enter list leave fade vue3 active

<template>
  <div class='box'>
    <button @click="addItem">添加项目</button>
    <button @click="removeItem">删除项目</button>

    <TransitionGroup name="list" tag="ul" class="container">
      <li v-for="item in items" :key="item.id" class="list-item">
        {{ item.text }}
      </li>
    </TransitionGroup>
  </div>
</template>

<script lang='ts' setup>
import { ref } from 'vue';

interface ListItem {
  id: number;
  text: string;
}

const items = ref<ListItem[]>([
  { id: 1, text: '项目 1' },
  { id: 2, text: '项目 2' },
  { id: 3, text: '项目 3' },
]);

let nextId = 4;

const addItem = () => {
  items.value.push({
    id: nextId++,
    text: `项目 ${nextId - 1}`
  });
};

const removeItem = () => {
  if (items.value.length) {
    items.value.splice(Math.floor(Math.random() * items.value.length), 1);
  }
};
</script>

<style lang='scss' scoped>
.container {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 20px;
  list-style: none;
}

.list-item {
  padding: 10px 20px;
  background: #42b883;
  color: white;
  border-radius: 4px;
  cursor: pointer;
}

// 进入和离开动画
.list-enter-active,
.list-leave-active {
  transition: all 0.5s ease;
}

// 进入动画起始状态和离开动画结束状态
.list-enter-from,
.list-leave-to {
  opacity: 0;
  transform: translateX(30px);
}

// 移动动画
.list-move {
  transition: transform 0.5s ease;
}
</style>

在这个例子中,我们将 TransitionGroup 的 name 属性设置为 "list",然后在 CSS 中定义了 .list-enter-active、.list-leave-active、.list-enter-from 和 .list-leave-to 这四个类,以实现进入和离开的过渡效果。

当项目进入时,.list-enter-active 和 .list-enter-from 类将应用于项目,而当项目离开时,.list-leave-active 和 .list-leave-to 类将应用于项目。这些类名是根据 name 属性的值自动生成的。

例如,如果您将 name 属性设置为 "fade",那么您需要在 CSS 中定义 .fade-enter-active、.fade-leave-active、.fade-enter-from 和 .fade-leave-to 这四个类,以实现进入和离开的过渡效果。

标签:TransitionGroup,示例,text,enter,list,leave,fade,vue3,active
From: https://www.cnblogs.com/jocongmin/p/18582757

相关文章

  • ts enum 使用示例
    enum既可以作为值使用,也可以作为类型使用。枚举的打印结果是一个对象<template><divclass='box'><divclass="enum-demo"><h3>用户状态:{{userStatusText}}</h3><button@click="toggleUserStatus">切换用户状态<......
  • Bootstrap-Flask的完整开发示例
    下面是一个完整的Bootstrap-Flask示例项目,展示如何结合Flask-WTF和Bootstrap-Flask构建一个带有表单的网页。项目功能1.提供一个简单的用户注册表单。2.使用Flask-WTF定义表单。3.使用Bootstrap-Flask自动为表单和字段应用Bootstrap样式。目录结构boots......
  • 使用vue3-json-excel插件数据过长生成的数据变为科学计数法
    存在的问题:借用vue3-json-excel插件导出的xls的tagID这一项数据过长出现科学技术法。方法1.网上给出的办法是将长数字转换为字符串。我的数据tagID这个数据接口返回来的本就是字符串。所以改方法不行......
  • spring boot vue3 ngnix 后端接收不到cookie的问题
       1、前端工程,发送request请求的地方,设置   withCredentials:true 2、后端工程:不能使用.allowedOrigins("*")使用这个代替.allowedOriginPatterns("*") 3、拦截器中 4、ngnix配置   最后,前端工程,生产环境配置文件中的,地址,一定......
  • 记录Vue3中使用pinia可能遇到的问题及解决方法
    1.在安装依赖时容易停留pinia,附带持久化插件使用的地址https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/方法:请按照以下步骤:删除C:\Users账户中的.npmrc文件在命令提示符里执行npmcacheverify在命令提示符里执行npmconfigsetregistryhttps://regi......
  • (系列十三)Vue3+Echarts搭建超好看的系统面板
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。友情提醒:本篇文章是属于系......
  • 【HarmonyOS开发】华为商城应用页面实验示例解析(ArkTS实战解析)
    一.实验背景本次项目为华为云鸿蒙应用入门级开发者认证的实验项目,借此来巩固对ArkTS的学习。实验源地址开发者云实验_云实验KooLabs_在线实验_上云实践_云计算实验_AI实验_华为云官方实验平台-华为云 实验目标本实验一共需要完成以下三个部分的任务:本实验将模拟制作......
  • vue3 + pnpm 打造一个 monorepo 项目
    Monorepo和Multirepo单一仓库(Monorepo)架构,可以理解为:利用单一仓库来管理多个packages的一种策略或手段;与其相对的是多仓库(Multirepo)架构Monorepo目录中除了会有公共的package.json依赖以外,在每个sub-package子包下面,也会有其特有的package.json依赖。兄弟模块之间可以通过模......
  • 二叉树的遍历方式详解及代码示例
    二叉树的遍历方式详解及代码示例二叉树的遍历方式详解及代码示例摘要引言1.二叉树的前序遍历(Pre-orderTraversal)1.1前序遍历的定义1.2前序遍历的代码示例输出:2.二叉树的中序遍历(In-orderTraversal)2.1中序遍历的定义2.2中序遍历的代码示例输出:3.二叉树的后......
  • vue3 原生 JS canvas 封装获取验证码组件
    前言由于开发中,产品有需求,要求开发一个可以自定义字符的随机获取4个字符的验证码组件,然后我就仿照流行的验证码功能写了一个 运行效果HTML<template><!--验证码画布容器,点击后会触发验证码刷新--><spanclass="s-canvas"@click="changeCode"><canvas......