热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自定义video样式

和朋友聊天说到了video自定义样式问题,今天抽空简单试验了一下,下面贴上代码。dom结构如下:js代码如下:实现效果如下:如有表述不准确之处,欢迎指正,欢迎补

和朋友聊天说到了video自定义样式问题,今天抽空简单试验了一下,下面贴上代码。

dom结构如下:

<video id="video1" width="399" height="300" poster="video_bg.jpg">
<source src="http://nettuts.s3.amazonaws.com/763_sammyJSIntro/trailer_test.mp4" type="video/mp4" />
video>
<div id="isPlay" class="stop">div>
<div id="current">div>
<div id="buffered">div>
<div id="duration">div>
<div id="fullScreen">全屏div>
<div id="progress">
<div id="bar">div>
<div id="buffer">div>
div>

js代码如下:

var isPlay = document.getElementById(‘isPlay‘);
var video1 = document.getElementById(‘video1‘);
var current = document.getElementById(‘current‘);
var buffered = document.getElementById(‘buffered‘);
var duration = document.getElementById(‘duration‘);
var fullScreen = document.getElementById(‘fullScreen‘);
var progress = document.getElementById(‘progress‘);
var bar = document.getElementById(‘bar‘);
var buffer = document.getElementById(‘buffer‘);
// 补零
function zeroFill(num){
if (num<10) {
num
= "0" +num;
}
return num;
};
// 处理秒数为时分秒 h:m:s
function getTime(num){
var m = zeroFill(Math.floor(num/60)),remainder = zeroFill(Math.floor(num%60)),h = zeroFill(Math.floor(m/60)),time = ‘‘+h+‘:‘+m+‘:‘+remainder+‘‘;
return time;
};
//全屏方法
function launchFullScreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
}
else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
}
else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
}
else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
};
// 播放暂停点击方法
isPlay.Onclick=function(){
if(isPlay.className==‘stop‘){
video1.play();
bufferTimer
= setInterval(function(){
buffer.style.width
= video1.buffered.end(0)/video1.duration*100+"%";
},1000/30);
if(video1.buffered.end(0) == video1.duration){
buffer.style.width
= "100%";
clearInterval(bufferTimer);
}
timer
= setInterval(function(){
bar.style.width
= video1.currentTime/video1.duration*100+"%";
},1000/30)
isPlay.className="play";
}
else if(isPlay.className==‘play‘){
video1.pause();
clearInterval(timer);
isPlay.className
="stop";
}
};
// 当视频播放位置已经改变
video1.Ontimeupdate= function(){
current.innerHTML
= getTime(this.currentTime);
duration.innerHTML
= getTime(this.duration);
buffered.innerHTML
= this.buffered.end(0);
if(this.currentTime == this.duration){
isPlay.className
="stop";
}
};
// 进度条点击方法
progress.Onclick= function(e){
var barLength = e.pageX - progress.offsetLeft;
video1.currentTime
= barLength/progress.clientWidth*video1.duration;
bar.style.width = barLength/progress.clientWidth*100+"%";

};
// 全屏按钮点击方法
fullScreen.Onclick= function(){
launchFullScreen(video1);
};

实现效果如下:

技术分享图片

技术分享图片

如有表述不准确之处,欢迎指正,欢迎补充,感谢阅读。


推荐阅读
  • 图基本概念及操作
    图基本概念及操作一、思维导图二、重要概念笔记1.图的定义图(Graph)G由顶点集合V(G)和边集合E(G)构成。图可分为有向图和无向图。2.图的存储结构一、邻接矩阵:二、邻接表; ... [详细]
  • maven 阿里云节点,速度快
    修改maven根目录下的conf文件夹中的setting.xml文件.http:maven.aliyun.comOSChina谷歌Google开源中国- Nexusosc更新频率据 ... [详细]
  • 测试工作——TestNG
    阅读目录TestNG介绍在Eclipse中安装TestNG插件TestNG最简单的测试TestNG的基本注解TestNG中如何执行测试TestNG中按顺序执行CaseTestNG异 ... [详细]
  • Hibernate的入门:
    1下载Hibernate5http:sourceforge.netprojectshibernatefileshibernate-orm5.0.7.Finalhibernate-r ... [详细]
  • ARM LCD屏调试3屏的应用编程
    2011-06-2519:20:47驱动自己写完了,应用函数自己就不写了,找了一点代码参考,移植并修改了一下,配合之前的定义的接口文档,我贴出部分代码。目录:一,开发环境1二 ... [详细]
  • Fabricetcdraft模式部署配置要求以下信息仅供参考系统环境(Centos7.5)Docker版本(19.03.12)Docker-compose版本(1.24.0)Fab ... [详细]
  • exp ... [详细]
  • 1publicstaticvoidw ... [详细]
  • OSI七层模型03——数据封装
    ![](http:i2.51cto.comimagesblog20180920135ff2bc38a2395f0a8c7cebcc5d5bbb.jpg?x-oss-processi ... [详细]
  • 请比较欧式距离与曼哈顿距离?
    1.欧氏距离(EuclideanDistance)欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。二维平面上点a(x1, ... [详细]
  • 【二食堂】AlphaScrum Meeting 4
    ScrumMeeting3例会时间:4.1312:0012:30进度情况|组员|昨日进度|今日任务||||||李健|1.主页面的搭建工作issue|1.完成主页搭建2.与后端协商确 ... [详细]
  • 昨天在OJ上做CTF的题目,发现有道python的题目很有意思,让我知道了raw_input和input的区别,并且能干一些别的事情。官方文档上说,input()相当于eval(r ... [详细]
  • 题目链接:https:vjudge.netcontest103424#problemI转载于:大牛博客题目大意:有n个货物,并且知道了每个货物的重量,每次用载重量分别为c1, ... [详细]
  • KotlinDSL,指用Kotlin写的DomainSpecificLanguage.本文通过解析官方的KotlinDSL写html的例子,来说明KotlinDSL是什么.首 ... [详细]
  • 1、dt视图结构内容dt+结构名要么dt+结构名+住址kddt_object_headernt!_OBJECT_HEADER+0x000PointerCount:Int4B+0x ... [详细]
author-avatar
反反复复-念念不忘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有