可以使用Vue的transition组件和v-for指令来实现图片和视频的轮播效果。

首先,需要在Vue组件中定义一个数组,用来存储图片和视频的路径。

<template>
  <div>
    <transition name="fade" mode="out-in">
      <div :key="currentIndex">
        <img v-if="isImage(currentIndex)" :src="items[currentIndex]" />
        <video v-else :src="items[currentIndex]" controls></video>
      </div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentIndex: 0,
      items: [
        "path/to/image1.jpg",
        "path/to/video1.mp4",
        "path/to/image2.jpg",
        "path/to/video2.mp4",
        "path/to/image3.jpg",
        "path/to/video3.mp4",
      ],
    };
  },
  methods: {
    isImage(index) {
      return /\.(jpe?g|png|gif)$/.test(this.items[index]);
    },
    next() {
      this.currentIndex = (this.currentIndex + 1) % this.items.length;
    },
  },
  mounted() {
    setInterval(this.next, 3000);
  },
};
</script>

上面的代码中,transition组件会根据currentIndex的变化来触发动画效果。当currentIndex变化时,会根据当前的路径判断是显示图片还是视频。isImage方法用来判断当前路径是否为图片。next方法用来更新currentIndex的值,实现轮播效果。在mounted钩子函数中,使用setInterval方法每隔3秒钟调用next方法,实现自动轮播效果。

最后,为了实现渐变动画效果,需要在样式表中定义一个.fade的类。

.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
  opacity: 0;
}
``
vue 实现图片视频一个一个轮播

原文地址: http://www.cveoy.top/t/topic/fpIT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录