一个自定义的html5视频播放器

news/2024/11/24 13:45:42/

// 功能:

// 1.视频的播放与暂停(图标变化)

// 2.总时间的显示

// 3.当前时间的显示(进度)

// 4.进度条的显示

// 5.跳跃播放

// 6.全屏

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>自定义视频播放器</title><!-- 所有的库一定都在当前页面的css的前面 --><link rel="stylesheet" href="./css/font-awesome.min.css"><!-- <link rel="stylesheet" href="./css/font-awesome.css"> --><link rel="stylesheet" href="./css/main.css">
</head>
<body><div class="player"><!-- 视频 --><video src="./movie/movie02.mp4" width="100%" height="100%"><!-- <source src="./movie//movie02.mp4"> --></video><!-- 控制菜单 --><div class="controls"><!-- 播放按钮 --><a href="javascript:;" class="play-btn fa fa-play-circle-o"></a><!-- 进度条 --><div class="progress"><div class="progress-bar" style="width: 0%"></div></div><!-- 播放时间 --><div class="time"><span class="current">00:00:00</span>/<span class="total">00:00:00</span></div><!-- 全屏按钮 --><a href="javascript:;" class="fullscreen fa fa-expand"></a></div></div><script>// 功能:// 1.视频的播放与暂停(图标变化)// 2.总时间的显示// 3.当前时间的显示(进度)// 4.进度条的显示// 5.跳跃播放// 6.全屏// 下面开始实现功能:// 1.视频的播放与暂停(图标变化)// 获取视频以及按钮var video=document.querySelector("video");var btn=document.querySelector(".play-btn");btn.addEventListener("click",function(){// 判断视频状态并改变按钮if(video.paused){video.play();// this.classList.toggle("fa-pause-circle-o");this.classList.remove("fa-play-circle-o");this.classList.add("fa-pause-circle-o");}else{video.pause();this.classList.remove("fa-pause-circle-o");this.classList.add("fa-play-circle-o");}});// 2.总时间的显示// 获取总时间的按钮var total=document.querySelector(".total");video.oncanplay=function(){var h=Math.floor(video.duration/3600);var m=Math.floor(video.duration/60-(h*60));var s=Math.floor(video.duration%60);h=h<10?'0'+h:h;m=m<10?'0'+m:m;s=s<10?'0'+s:s;total.innerHTML=h+':'+m+':'+s;}// 获取当前时间var current=document.querySelector(".current");// 获取进度条var progressBar = document.querySelector(".progress-bar");video.ontimeupdate=function(){var h=Math.floor(video.currentTime/3600);var m=Math.floor(video.currentTime/60-(h*60));var s=Math.floor(video.currentTime%60);h=h<10?'0'+h:h;m=m<10?'0'+m:m;s=s<10?'0'+s:s;current.innerHTML=h+':'+m+':'+s;// 计算公式 进度条的长度 = 当前时间 / 总时间 * 100 + '%'progressBar.style.width = video.currentTime / video.duration * 100 + '%';}//跳跃播放// 获取进度条var progress=document.querySelector(".progress");progress.addEventListener("click",function(event){var clickX=event.offsetX;var width=this.offsetWidthvideo.currentTime = clickX / width * video.duration;});// 全屏// 获取按钮var fullscreen = document.querySelector(".fullscreen");fullscreen.onclick = function () {// 请求全屏video.webkitRequestFullScreen();}</script>
</body>
</html>


http://www.ppmy.cn/news/10851.html

相关文章

【2004NOIP普及组】T2.花生采摘 试题解析

【2004NOIP普及组】T2.花生采摘 试题解析 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!——熊字”。 鲁宾逊先生…

RHCE ansible第二次作业

1)安装和配置ansible以及ansible控制节点server.example.com如下&#xff1a; 2)创建一个名为/home/student/ansible/inventory的静态库存文件如下所示&#xff1a; 2.1)node1 是dev主机组的成员 2.2)node2是test主机组的成员 2.3)node1和node2是prod主机组的成员 2.4)node1是b…

Apollo本地快速部署

GitHub项目地址 Gitee项目地址 Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适…

【Linux】项目构建自动化工具——make和makefile

make 和 makefile1.背景2. 利用make和makefile简单编译一个源文件3.使用方法解释4.执行原理5.项目清理1.背景 &#xff08;1&#xff09;一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff…

胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素

胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素 文章目录胡凡 《算法笔记》 上机实战训练指南 chap3 入门模拟: 3.2 查找元素【PAT B1041】考试座位号【PAT B1004】成绩排名【PAT B1028】人口普查解决过程(cpp)AC代码python实现AC代码pycode1pycode2未AC代码…

如何设置Windows文件夹背景为黑色?(其实就是“深色模式”)

大家好。我们直接进入正题! 如何把Windows文件夹背景改成黑色&#xff1f;就像下面这样。 第一步&#xff1a;打开 “个性化” 设置界面 这里介绍两种方法&#xff1a;(1)在电脑桌面 右键——》 个性化 &#xff0c;如下图 (2)点击 开始——》设置 ——》个性化 &#xff0c;如…

为什么学完了 C 语言觉得自己什么都干不了?

其他方向不了解哈&#xff0c;我2013年大一开始自学C语言&#xff0c;然后就开始做嵌入式&#xff0c;大学四年&#xff0c;到现在毕业又六年&#xff0c;C语言已经陪我十年了&#xff0c;可以说是一直坚持且养家糊口的工具。 所以&#xff0c;别的也许不行&#xff0c;但是嵌…

React源码分析5-commit

前两章讲到了&#xff0c;react 在 render 阶段的 completeUnitWork 执行完毕后&#xff0c;就执行 commitRoot 进入到了 commit 阶段&#xff0c;本章将讲解 commit 阶段执行过程源码。 总览 commit 阶段相比于 render 阶段要简单很多&#xff0c;因为大部分更新的前期操作都…