当前位置: 首页 > news >正文

vue3 大屏列表轮播,使用transition-group

一、transition-group介绍transition-group 是 Vue 框架中专门用来给列表添加动画效果的内置组件‌它能让你在做添加、删除或排序列表项时看到平滑的过渡动画 。‌‌‌对应的css例如transition-group的类名为 list动画类名就为list-enter-active、list-leave-active 控制动画过程list-enter-from、list-leave-to 控制开始结束状态二、代码实现template div mouseenterpauseCarousel mouseleaveresumeCarousel transition-group classcontentBox namecarousel tagdiv div v-foritem in rows :keyitem.id div classcontent el-image classimg :srcitem.shop_logo || slaughterDefault / div classinfo el-text classtext line-clamp2{{ item.name }}/el-text div classdetail span classcount累计屠宰{{ item.total_quantity }}头/span div classrating span好评率/span el-rate v-modelitem.positiveRating sizesmall disabled-void-color#272C1B disabled / span classratingNum{{ item.good_rate }}%/span /div /div /div /div /div /transition-group /template script langts setup import { onMounted, onBeforeUnmount, ref, watch } from vue // 数据 const data: any ref([]) // 轮播 const rows ref([]); const currentIndex ref(3); // 从第4个开始索引3 const isAnimating ref(false); const isPaused ref(false); // 暂停状态 const timer ref(null); // 定时器 onMounted(async() { // 获取数据 await getData() }) onBeforeUnmount(() { clearInterval(timer.value) }) const getData async() { try { // 自己的接口获取数据 // 显示几条就截取几条 rows.value data.value.slice(0, 3) if (data.value.length 0) { startCarousel() } } catch (error) { console.error(获取数据失败:, error); data.value [] } } // 轮播动画 const startAnimation () { if (isAnimating.value || isPaused.value) return; isAnimating.value true; // 移除第一条数据会触发动画 rows.value.shift(); // 添加下一条数据循环整个列表 const nextItem data.value[currentIndex.value % data.value.length]; rows.value.push(nextItem); currentIndex.value; // 重置索引到0如果已经到达列表末尾 if (currentIndex.value data.value.length) { currentIndex.value 0; } // 等待动画完成后重置状态 setTimeout(() { isAnimating.value false; }, 400); }; // 开始轮播 const startCarousel () { clearInterval(timer.value); // 先清除已有定时器 if (data.value.length 3) { timer.value setInterval(startAnimation, 3000); } }; // 暂停轮播 const pauseCarousel () { isPaused.value true; clearInterval(timer.value); }; // 继续轮播 const resumeCarousel () { isPaused.value false; startCarousel(); // 重新开始轮播 }; /script style langscss scoped /* 轮播过渡动画 - 边轮播边过渡 */ .carousel-enter-active { transition: all 0.5s ease-out; z-index: 10; } .carousel-leave-active { transition: all 0.5s ease-in; position: absolute; width: 100%; left: 0; right: 0; } .carousel-enter-from { opacity: 0; transform: translateY(100%); } .carousel-leave-to { opacity: 0; transform: translateY(-100%); } .carousel-move { transition: transform 0.5s ease; } /style
http://www.zskr.cn/news/1360867.html

相关文章:

  • 昇腾CANN ops-transformer MoE:专家混合路由的 NPU 融合优化实战
  • 136、运动控制中的同步机制:时间戳与触发
  • 如何用代码缺陷率评估代码质量与团队产出效率——从单一指标到量化管理体系的升级路径
  • 137、运动控制中的故障诊断与安全机制
  • 【限时公开】我们压测了23个开源AI Agent框架,仅2个支持亚秒级SQL生成+自动schema纠错(测试报告PDF已备)
  • 昇腾CANN manifest:仓库清单与版本管理实战
  • 苏州二手注塑机哪家好?本地优质厂家与选购要点推荐 - GrowthUME
  • 正则表达式不再头疼:用 AI 生成并验证复杂的字符串匹配规则
  • 测试数据造假神器:利用 LLM 批量生成符合业务逻辑的连贯 Mock 数据
  • 【Claude+IDE深度协同】:VS Code与JetBrains插件配置终极手册(含私有模型微调接口)
  • 【信息系统项目管理师论文押题】论信息系统项目的不确定性绩效域
  • 【光学】偏振光线追迹Matlab仿真
  • 用weelinking大模型聚合平台深度测评Codex VS Claude Code:谁才是真正的AI编程之王?
  • 2026专业GEO优化服务商TOP推荐(11大全覆盖) - GrowthUME
  • CBCX:平台稳定性与用户体验的全面观察
  • 企业级RAG落地需要考虑的七个优化指标
  • 从零打造 AI 小说创作平台(四):项目与章节管理
  • UE5官方文档(第一人称射击游戏教程)解读 第七章
  • agent-skills 完整使用教程(2026最新版)
  • TCP可靠传输机制——“不丢包“背后的技术秘密
  • MLX框架深度优化指南:解锁苹果芯片的机器学习潜能
  • 03华夏之光永存:28nm工艺发展趋势|成熟制程长期黄金期+国产自主超车主线
  • 合肥租厂房该找谁 - GrowthUME
  • 学术写作效率飞跃!2026一站式AI论文写作工具精选指南
  • 谁是性价比之王?8款AI论文写作软件榜单,毕业护航!
  • 别再只用脚本了!用MATLAB OOP重构你的数据处理流程(附日期类实战代码)
  • 微信小程序逆向工程深度解析:wxappUnpacker实用指南
  • OpenClaw底层揭秘:打造私有化AI Agent团队的核心原理与实战解析!
  • 85%企业将淘汰纯业务程序员!2026年前,大模型才是你的职业救命稻草!
  • 广州GEO搜索优化机构实测评测:四大服务商能力对比 - 奔跑123