当前位置:首页 > 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 实现视频播放的方法 在 Vue 项目中实现视频播放可以通过多种方式完成,以下是几种常见的方法: 使用 HTML5 的 <video> 标签 在 Vue 组件中直接使用 HT…

vue实现收货功能

vue实现收货功能

Vue实现收货功能的基本思路 收货功能通常涉及前端界面交互、后端数据更新和状态管理。在Vue中,可以通过组件化开发实现这一功能,结合API调用与状态管理工具(如Vuex或Pinia)。 创建收货按钮…

css帧动画制作视频

css帧动画制作视频

使用CSS关键帧(@keyframes)制作动画 定义关键帧动画,通过@keyframes规则指定动画在不同时间点的样式变化。例如创建一个元素从左到右移动的动画: @keyframes slide…

vue 实现收藏功能

vue 实现收藏功能

实现收藏功能的基本思路 在Vue中实现收藏功能通常涉及前端交互与后端数据存储的结合。核心逻辑包括:用户点击收藏按钮时切换状态,并通过API将状态同步到后端数据库。 前端组件实现 创建收藏按钮组件,…

vue实现ping功能

vue实现ping功能

实现Ping功能的思路 在Vue中实现Ping功能通常需要借助浏览器API或后端服务。由于浏览器环境限制,无法直接发送ICMP请求(传统Ping协议),但可通过以下两种方式模拟: HTTP请求模拟P…

vue实现轨道功能

vue实现轨道功能

实现轨道功能的基本思路 轨道功能通常指在界面中创建可滑动的轨道,用户可以通过拖动或点击轨道上的元素进行交互。Vue.js结合其响应式特性和组件化开发方式,可以高效实现这一功能。 核心实现步骤 创建…