当前位置:首页 > VUE

vue视频列表实现

2026-01-18 11:21:55VUE

Vue 视频列表实现

数据准备

定义一个数组存储视频信息,每个视频对象包含标题、封面图、播放地址等属性。

data() {
  return {
    videos: [
      {
        id: 1,
        title: '视频1',
        cover: 'https://example.com/cover1.jpg',
        url: 'https://example.com/video1.mp4'
      },
      {
        id: 2,
        title: '视频2', 
        cover: 'https://example.com/cover2.jpg',
        url: 'https://example.com/video2.mp4'
      }
    ]
  }
}

列表渲染

使用v-for指令循环渲染视频列表,绑定点击事件处理视频播放。

vue视频列表实现

<div class="video-list">
  <div 
    v-for="video in videos" 
    :key="video.id"
    class="video-item"
    @click="playVideo(video)"
  >
    <img :src="video.cover" :alt="video.title">
    <h3>{{ video.title }}</h3>
  </div>
</div>

视频播放组件

添加视频播放器组件,控制视频的播放状态。

<video 
  ref="videoPlayer" 
  controls
  :src="currentVideo.url"
  v-if="currentVideo"
></video>

方法实现

定义播放视频的方法,设置当前播放视频并控制播放器。

vue视频列表实现

methods: {
  playVideo(video) {
    this.currentVideo = video
    this.$nextTick(() => {
      this.$refs.videoPlayer.play()
    })
  }
}

样式设计

为视频列表和播放器添加基本样式。

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

.video-item {
  cursor: pointer;
}

.video-item img {
  width: 100%;
  height: auto;
}

完整组件示例

将上述代码整合为完整组件。

<template>
  <div>
    <div class="video-list">
      <div 
        v-for="video in videos" 
        :key="video.id"
        class="video-item"
        @click="playVideo(video)"
      >
        <img :src="video.cover" :alt="video.title">
        <h3>{{ video.title }}</h3>
      </div>
    </div>

    <video 
      ref="videoPlayer" 
      controls
      :src="currentVideo.url"
      v-if="currentVideo"
    ></video>
  </div>
</template>

<script>
export default {
  data() {
    return {
      videos: [...],
      currentVideo: null
    }
  },
  methods: {
    playVideo(video) {
      this.currentVideo = video
      this.$nextTick(() => {
        this.$refs.videoPlayer.play()
      })
    }
  }
}
</script>

<style>
/* 样式代码 */
</style>

标签: 列表视频
分享给朋友:

相关文章

vue 实现长列表

vue 实现长列表

Vue 实现长列表的优化方案 虚拟滚动技术 虚拟滚动是处理长列表的高效方式,仅渲染可视区域内的元素。通过计算滚动位置动态加载和卸载DOM节点,大幅减少内存占用和渲染压力。 <template&…

elementui视频

elementui视频

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

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

php实现视频直播

php实现视频直播

PHP 实现视频直播的基本方法 PHP 本身并不直接处理视频流,但可以作为后端支持视频直播系统的搭建。以下是几种常见的实现方式: 使用第三方流媒体服务 利用现成的流媒体平台(如 Wowza、Red5…

vue实现视频id

vue实现视频id

Vue 中实现视频 ID 管理 在 Vue 中管理视频 ID 通常涉及动态绑定、状态管理和 API 交互。以下是几种常见场景的实现方法: 动态绑定视频 ID 到播放器 通过 v-bind 或 :sr…

vue实现纵向列表

vue实现纵向列表

实现纵向列表的基本方法 在Vue中实现纵向列表可以通过v-for指令结合数组数据渲染。核心是利用循环遍历数据生成列表项,并设置CSS控制纵向排列。 <template> <di…