vue利用transition过渡动画实现轮播图
<template> <div id="app"> <ul> <li v-for="(item, index) in slideData" :key="index"> <transition> <img :src="item.img" v-if="index === currentIndex" /> </transition> </li> </ul> </div> </template> <script> export default { data() { return { slideData: [ { id: 1, img: 'https://img.alicdn.com/imgextra/i2/6000000001117/O1CN01Mn6ES81K7d5SAd6hU_!!6000000001117-0-octopus.jpg' }, { id: 2, img: 'https://aecpm.alicdn.com/simba/img/TB1XotJXQfb_uJkSnhJSuvdDVXa.jpg' }, { id: 3, img: 'https://aecpm.alicdn.com/simba/img/TB1JNHwKFXXXXafXVXXSutbFXXX.jpg' } ], currentIndex: 0 } }, created() { this.autoPlay() }, methods: { // 自动轮播,每隔 1 秒轮播一次 autoPlay() {
const timer = setInterval(() => {
this._setIndex()
}, 1000)
this.$once('hook:beforeDestroy', () => {
clearInterval(timer)
timer = null
})
}, // 设置当前索引 _setIndex() { this.currentIndex++ if (this.currentIndex === this.slideData.length) this.currentIndex = 0 } } } </script> <style lang="less" scoped> #app { > ul { position: relative; width: 500px; height: 284px; overflow: hidden; img { position: absolute; top: 0; left: 0; } .v-enter-active, .v-leave-active { transition: transform 0.5s; } .v-enter { transform: translateX(100%); } .v-enter-to { transform: translateX(0); } .v-leave { transform: translateX(0); } .v-leave-to { transform: translateX(-100%); } } } </style>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
2020-09-12 根据某个字段值对数组进行排序