当前位置: 首页 > news >正文

视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频)

目录

  • 需求
  • 实现原理
  • 实现代码
  • 页面展示

需求

视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频

实现原理

  1. 在 video 标签添加 自定义属性 id (必须唯一)
  2. 给每个 video 标签 添加 play 视频播放事件
  3. 播放视频时,触发 play 事件,通过添加的自定义属性 id 判断,将 非当前播放视频都暂停

实现代码

<!-- 查看视频 -->
<template><el-drawertitle="查看视频"size="70%":visible.sync="drawerVisible"destroy-on-close:before-close="handleClose"><div class="list"><div v-for="item in videoList" :key="item.id"><!-- 【主要代码】添加自定义属性 id --><video width="100%" controls="controls" :data-id="item.id"><source src="./video.mp4" type="video/mp4" /></video></div></div></el-drawer>
</template><script>
export default {name: 'VideoListDrawer',data() {return {drawerVisible: false,drawerType: '',videoList: [...Array(20).keys()].map((item) => {return {id: item}}),currentVideo: ''}},methods: {open(type, rowData) {this.drawerType = typesetTimeout(() => {this.getVideoDom()}, 500)this.drawerVisible = true},// 【主要代码】视频播放暂停处理函数getVideoDom() {const videoList = document.querySelectorAll('video')videoList.forEach((item) => {// 每个 video 添加 play 监听事件item.addEventListener('play', (e) => {// 获取当前播放视频的自定义属性 id 的值this.currentVideo = e.target.dataset.id// 遍历所有 video 标签,将非当前播放视频都暂停videoList.forEach((i) => {if (i.dataset.id !== this.currentVideo) {i.pause() // 暂停视频}})})})},handleClose() {this.drawerVisible = false}}
}
</script><style lang='scss' scoped>
::v-deep .el-drawer {.el-drawer__header {text-align: left;}.el-drawer__body {padding: 10px 20px;text-align: left;.btns {margin-bottom: 10px;}.list {display: flex;flex-wrap: wrap;> div {width: calc(50% - 10px);margin-right: 10px;margin-bottom: 10px;}}}
}
</style>

页面展示

在这里插入图片描述

相关文章:

  • java实体类全部复制到新类及部分复制到新类
  • 2024最新最全:【Windows10】u盘安装系列教程【附安装包】
  • 【笔记】Arrays.binarySearch()实践,以及需要注意的一些问题点
  • Python画图之HelloKitty
  • overflow溢出属性、定位、前端基础之JavaScript
  • 手写一个uniapp的步骤条组件
  • OSPF高级特性2(特殊区域,聚合)
  • 【Linux基础IO篇】系统文件接口(1)
  • 大厂面试题-TCP协议为什么要设计三次握手?
  • Python selenium驱动下载,模块安装以及基本使用
  • fastadmin笔记,关联查询,下拉框,关联下拉框查询,编辑时下拉框默认值
  • ArcGIS制作土地利用现状图
  • 第5天:基础入门-资产架构amp;端口amp;应用amp;CDNamp;WAFamp;站库分离amp;负载均衡
  • Fabric二进制建链(客户端与节点主机分离)
  • 【MATLAB源码-第65期】基于matlab的OFDM/OTFS通信系统性能对比,输处误码率曲线;对比是否采用LDPC编码。
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • chrome扩展demo1-小时钟
  • create-react-app做的留言板
  • GraphQL学习过程应该是这样的
  • idea + plantuml 画流程图
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Java编程基础24——递归练习
  • miaov-React 最佳入门
  • Protobuf3语言指南
  • python学习笔记 - ThreadLocal
  • Spring Boot快速入门(一):Hello Spring Boot
  • 基于web的全景—— Pannellum小试
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 实战|智能家居行业移动应用性能分析
  • 系统认识JavaScript正则表达式
  • 小程序开发之路(一)
  • 运行时添加log4j2的appender
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • 、写入Shellcode到注册表上线
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .Net Web窗口页属性
  • .NET 材料检测系统崩溃分析
  • .NET 中创建支持集合初始化器的类型
  • .net6使用Sejil可视化日志
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题