当前位置:首页 > VUE

vue实现视频列表代码

2026-02-23 23:16:22VUE

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

视频列表组件基础结构

<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>

功能扩展建议

添加视频加载状态指示器

<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.js实现的通讯录示例代码,包含联系人列表、搜索和添加功能: 实现步骤 创建Vue组件 <template> <div class="address-bo…

h5实现响应式代码

h5实现响应式代码

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

js实现列表

js实现列表

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

jquery代码

jquery代码

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

uniapp商品列表

uniapp商品列表

商品列表实现方法 在uniapp中实现商品列表功能,可以通过多种方式完成,以下是几种常见的方法: 使用scroll-view组件实现滚动列表 <scroll-view scroll-y=…

vue列表查询实现

vue列表查询实现

实现Vue列表查询功能 基本数据绑定与渲染 在Vue中实现列表查询,首先需要定义数据源和查询条件。通过v-model绑定搜索输入框,使用计算属性过滤列表。 <template> &l…