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>
复制代码

 

posted @   吴小明-  阅读(1094)  评论(0编辑  收藏  举报
编辑推荐:
· 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 根据某个字段值对数组进行排序
点击右上角即可分享
微信分享提示