当前位置:首页 > VUE

vue实现视频轮播功能

2026-01-22 01:44:12VUE

使用Swiper组件实现视频轮播

安装Swiper依赖包

npm install swiper vue-awesome-swiper

引入Swiper组件

import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/pagination'
import 'swiper/css/navigation'

基础模板结构

<template>
  <swiper
    :pagination="{
      clickable: true,
    }"
    :navigation="true"
    class="mySwiper"
  >
    <swiper-slide v-for="(video, index) in videos" :key="index">
      <video controls>
        <source :src="video.src" type="video/mp4">
      </video>
    </swiper-slide>
  </swiper>
</template>

数据定义

vue实现视频轮播功能

data() {
  return {
    videos: [
      { src: '/videos/video1.mp4' },
      { src: '/videos/video2.mp4' },
      { src: '/videos/video3.mp4' }
    ]
  }
}

自定义视频控制逻辑

添加自动播放功能

const swiperOptions = {
  autoplay: {
    delay: 3000,
    disableOnInteraction: false,
  },
  loop: true
}

视频播放状态管理

vue实现视频轮播功能

methods: {
  onSlideChange(swiper) {
    const activeSlide = swiper.slides[swiper.activeIndex]
    const video = activeSlide.querySelector('video')
    video.play()

    swiper.slides.forEach((slide, index) => {
      if(index !== swiper.activeIndex) {
        const v = slide.querySelector('video')
        v.pause()
        v.currentTime = 0
      }
    })
  }
}

响应式设计配置

设置不同断点的幻灯片数量

const swiperOptions = {
  breakpoints: {
    320: {
      slidesPerView: 1
    },
    768: {
      slidesPerView: 2
    },
    1024: {
      slidesPerView: 3
    }
  }
}

性能优化方案

懒加载视频资源

<video controls preload="none">
  <source :src="video.src" type="video/mp4">
</video>

添加加载状态指示

data() {
  return {
    loading: true
  }
},
methods: {
  videoLoaded() {
    this.loading = false
  }
}

完整组件示例

<template>
  <div class="video-carousel">
    <swiper
      :options="swiperOptions"
      @slideChange="onSlideChange"
    >
      <swiper-slide v-for="(video, index) in videos" :key="index">
        <div v-if="loading" class="loading-spinner"></div>
        <video
          controls
          preload="none"
          @loadeddata="videoLoaded"
        >
          <source :src="video.src" type="video/mp4">
        </video>
      </swiper-slide>
    </swiper>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loading: true,
      videos: [...],
      swiperOptions: {
        autoplay: { delay: 5000 },
        navigation: true,
        pagination: { clickable: true },
        breakpoints: {...}
      }
    }
  },
  methods: {...}
}
</script>

<style>
.video-carousel {
  max-width: 800px;
  margin: 0 auto;
}
.swiper-slide video {
  width: 100%;
  height: auto;
}
</style>

标签: 功能视频
分享给朋友:

相关文章

vue电影功能实现

vue电影功能实现

Vue 电影功能实现 数据获取与展示 使用 Axios 或 Fetch API 从电影 API(如 TMDb、豆瓣 API)获取数据。在 Vue 的 created 或 mounted 生命周期钩子中…

vue实现app功能

vue实现app功能

Vue 实现 App 功能的常见方法 使用 Capacitor 或 Cordova 进行混合开发 Vue 结合 Capacitor 或 Cordova 可以将 Web 应用打包成原生 App。Capa…

php购物车功能的实现

php购物车功能的实现

实现购物车功能的基本方法 使用PHP实现购物车功能可以通过会话(Session)或数据库存储购物车数据。以下是两种常见方法的详细说明。 使用Session存储购物车数据 PHP的$_SESSION可…

vue 实现多选功能

vue 实现多选功能

Vue 实现多选功能的方法 使用 v-model 绑定数组 在 Vue 中,可以通过 v-model 绑定一个数组来实现多选功能。适用于复选框组(checkbox)或下拉多选(select multi…

vue实现视频下滑

vue实现视频下滑

Vue 实现视频下滑功能 实现视频下滑功能通常涉及监听滚动事件、动态加载视频内容以及优化性能。以下是具体实现方法: 监听滚动事件 在 Vue 中可以通过 @scroll 事件监听滚动行为,结…

vue实现表情功能

vue实现表情功能

实现表情功能的基本思路 在Vue中实现表情功能通常涉及表情选择器的UI组件开发、表情数据的存储与渲染,以及用户输入与表情的交互逻辑。以下是具体实现方法: 表情数据准备 准备一个表情符号的数组或对象,…