当前位置:首页 > 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>

数据定义

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

自定义视频控制逻辑

添加自动播放功能

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

视频播放状态管理

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>元素或第三方播放器库(如video.js)的API调用。以下是具体实现方式: 使用原生HTML5 vi…

vue的艾特功能实现

vue的艾特功能实现

Vue 中的 @ 功能实现 Vue 中的 @ 符号是 v-on 指令的简写,用于绑定事件监听器。以下是具体实现方式: 基本语法 <button @click="handleClick"&…

vue实现功能

vue实现功能

Vue 实现功能的方法 Vue.js 是一个流行的前端框架,用于构建用户界面。以下是几种常见的功能实现方法: 数据绑定 Vue 提供了双向数据绑定,可以通过 v-model 指令实现表单输入和应用状…

elementui视频

elementui视频

以下是关于 ElementUI 视频资源的整理,涵盖教程、实战案例和官方资源: ElementUI 官方视频资源 ElementUI 官方文档虽以文字为主,但部分社区或第三方平台可能有官方团队发布的…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个流行的前端框架,用于构建用户界面和单页应用。以下是 Vue 功能实现的关键方法和技术。 数据绑定与响应式 Vue 的核心特性是数据绑定和响应式系统。通过…

uniapp实现支付功能

uniapp实现支付功能

支付功能实现概述 在UniApp中实现支付功能通常需要对接第三方支付平台(如微信支付、支付宝支付等)。以下是基于微信支付和支付宝支付的通用实现流程。 微信支付实现步骤 1. 配置支付权限 在微信开放…