当前位置:首页 > VUE

vue实现树形视频

2026-02-17 09:58:50VUE

Vue 实现树形视频列表

数据准备 树形结构通常采用嵌套的数组对象,每个节点包含 idlabelchildren 等字段。例如视频分类数据:

const treeData = [
  {
    id: 1,
    label: '电影',
    children: [
      { id: 11, label: '动作片', videoUrl: '...' },
      { id: 12, label: '科幻片', videoUrl: '...' }
    ]
  },
  {
    id: 2,
    label: '电视剧',
    children: [
      { id: 21, label: '国产剧', children: [...] }
    ]
  }
]

递归组件实现 通过 Vue 的递归组件特性渲染树形结构:

<template>
  <ul>
    <li v-for="node in treeData" :key="node.id">
      <span @click="toggleExpand(node)">{{ node.label }}</span>
      <video-player v-if="node.videoUrl" :src="node.videoUrl" />
      <tree-node 
        v-if="node.children && node.expanded" 
        :treeData="node.children" 
      />
    </li>
  </ul>
</template>

<script>
export default {
  name: 'TreeNode',
  props: ['treeData'],
  methods: {
    toggleExpand(node) {
      this.$set(node, 'expanded', !node.expanded)
    }
  }
}
</script>

视频播放集成 使用第三方库如 vue-video-player 实现视频嵌入:

import VideoPlayer from 'vue-video-player'
Vue.use(VideoPlayer)

组件中直接绑定视频地址:

<video-player :src="currentVideo" :options="playerOptions" />

交互优化

  • 添加展开/折叠图标:使用 Font Awesome 或自定义图标
  • 懒加载视频:仅在节点展开时加载视频资源
  • 动画过渡:通过 Vue 的 <transition> 添加展开动画

完整示例结构

<template>
  <div class="video-tree">
    <tree-node :treeData="treeData" />
  </div>
</template>

<script>
import TreeNode from './TreeNode.vue'
export default {
  components: { TreeNode },
  data() {
    return {
      treeData: [...] // 树形数据
    }
  }
}
</script>

关键点说明

  • 递归组件必须声明 name 属性
  • 使用 $set 确保响应式更新展开状态
  • 视频组件建议按需加载以提升性能
  • 深层嵌套时考虑虚拟滚动优化

样式建议

vue实现树形视频

.video-tree ul {
  list-style: none;
  padding-left: 20px;
}
.video-tree li {
  margin: 5px 0;
  cursor: pointer;
}

标签: 视频vue
分享给朋友:

相关文章

vue实现频道

vue实现频道

Vue实现频道功能的方法 使用Vue Router动态路由 通过Vue Router的动态路由功能可以轻松实现频道切换。在路由配置中定义动态参数,组件内通过this.$route.params获取当前…

vue实现必填

vue实现必填

Vue 实现表单必填验证的方法 在Vue中实现表单必填验证可以通过多种方式完成,以下是几种常见的方法: 使用HTML5原生属性 最简单的必填验证可以通过HTML5的required属性实现: &l…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

实现vue message

实现vue message

实现 Vue 消息提示组件 创建 Message 组件 在 src/components 目录下创建 Message.vue 文件,内容如下: <template> <tran…

vue实现开关灯

vue实现开关灯

Vue实现开关灯效果 使用Vue实现开关灯效果可以通过数据绑定和条件渲染完成。以下是具体实现方式: 创建Vue实例并定义数据 new Vue({ el: '#app', data:…

vue 不可回退实现

vue 不可回退实现

不可回退的实现方法 在Vue中,实现不可回退的功能通常涉及路由控制和状态管理。以下是几种常见的方法: 禁用浏览器后退按钮 通过监听popstate事件阻止默认行为: mounted()…