当前位置:首页 > VUE

vue实现视频列表代码

2026-02-23 23:16:22VUE

以下是一个基于Vue.js实现视频列表的示例代码,包含基础功能如视频展示、播放控制等:

vue实现视频列表代码

视频列表组件基础结构

<template>
  <div class="video-list">
    <div v-for="(video, index) in videos" :key="index" class="video-item">
      <video 
        :ref="'videoPlayer'+index"
        :poster="video.cover"
        @click="togglePlay(index)"
      >
        <source :src="video.url" type="video/mp4">
      </video>
      <div class="video-info">
        <h3>{{ video.title }}</h3>
        <p>{{ video.description }}</p>
      </div>
    </div>
  </div>
</template>

数据与状态管理

<script>
export default {
  data() {
    return {
      videos: [
        {
          id: 1,
          title: '示例视频1',
          description: '这是第一个示例视频',
          url: '/path/to/video1.mp4',
          cover: '/path/to/cover1.jpg'
        },
        // 更多视频数据...
      ],
      currentPlaying: null
    }
  }
}
</script>

播放控制方法

methods: {
  togglePlay(index) {
    const video = this.$refs[`videoPlayer${index}`][0]
    if (this.currentPlaying !== index) {
      if (this.currentPlaying !== null) {
        this.$refs[`videoPlayer${this.currentPlaying}`][0].pause()
      }
      video.play()
      this.currentPlaying = index
    } else {
      if (video.paused) {
        video.play()
      } else {
        video.pause()
      }
    }
  }
}

基础样式

<style scoped>
.video-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 20px;
}

.video-item video {
  width: 100%;
  cursor: pointer;
  border-radius: 8px;
}

.video-info {
  padding: 10px 0;
}
</style>

功能扩展建议

添加视频加载状态指示器

vue实现视频列表代码

<div v-if="loading" class="loading-indicator">
  加载中...
</div>

实现懒加载优化性能

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const video = entry.target
      video.setAttribute('src', video.dataset.src)
      observer.unobserve(video)
    }
  })
})

this.$nextTick(() => {
  document.querySelectorAll('video').forEach(video => {
    observer.observe(video)
  })
})

添加视频进度条控制

<input 
  type="range" 
  :value="currentProgress" 
  @input="seekVideo"
  min="0" 
  :max="duration"
>

该实现包含视频列表展示、播放控制等基础功能,可根据实际需求进一步扩展如分页加载、分类筛选等功能。

标签: 代码列表
分享给朋友:

相关文章

vue扫码登录代码实现

vue扫码登录代码实现

Vue 扫码登录实现方案 准备工作 确保项目已安装 Vue 2/3 及相关依赖,需要后端提供生成二维码和验证扫码状态的接口。 生成二维码 使用 qrcode 库生成登录二维码,需调用后端接口获取唯一…

h5实现响应式代码

h5实现响应式代码

响应式设计基础 HTML5实现响应式设计主要通过媒体查询(Media Queries)、弹性布局(Flexbox)、网格布局(Grid)和视口设置(Viewport Meta Tag)等技术。核心目标…

h5实现展开列表

h5实现展开列表

使用HTML5和CSS实现展开列表 在HTML5中,可以通过结合CSS和JavaScript实现展开列表效果。以下是几种常见的方法: 方法1:使用details和summary标签 HTML5提供…

jquery代码

jquery代码

以下是关于jQuery代码的常见用法和示例,涵盖基础操作、事件处理、DOM操作等核心功能: 基础语法 jQuery通过$()函数选择元素,支持CSS选择器语法: // 选择所有<p>元…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表功能 在 Vue 中实现搜索列表功能通常需要以下几个关键步骤: 数据绑定与列表渲染 使用 v-model 绑定搜索输入框,监听用户输入。通过 v-for 指令渲染过滤后的列表数据…

vue实现列表页

vue实现列表页

Vue 实现列表页的方法 数据绑定与渲染 使用 v-for 指令动态渲染列表数据,结合 :key 确保渲染性能。示例代码: <template> <ul> <…