HTML5中的视频标签和及其模仿视频播放器的效果在一些手机端应用比較多。由于手机端基本上废除了flash的独断。让HTML5当家做主人,所以对视频支持的比較好。

所以今天专门为大家奉上HTML5视频标签模拟视频播放器的小样例,让大家更好的理解HTML5和有效的应用在项目中。

  HTML代码

  1. <!-- src中放上本地的ogv的音频 -->
  2. <video id="v1" src="Intermission-Walk-in.ogv"></video>
  3. <div id="div1">
  4. <input type="button" value="播放" />
  5. <input type="button" value="00:00:00" />
  6. <input type="button" value="00:00:00" />
  7. <input type="button" value="静音" />
  8. <input type="button" value="全屏" />
  9. </div>
  10. <div id="div2">
  11. <div id="div3"></div>
  12. </div>
  13.  
  14. <div id="div4">
  15. <div id="div5"></div>
  16. </div>

  CSS代码

  1. #div2{ width:300px; height:30px; background:#666666; position:relative;}
  2. #div3{ width:30px; height:30px; background:red; position:absolute; left:0; top:0;}
  3. #div4{ width:300px; height:20px; background:#666666; position:relative; top:10px;}
  4. #div5{ width:20px; height:20px; background:yellow; position:absolute; right:0; top:0;}

  JavaScript代码

  1. window.onload = function(){
  2. var oV = document.getElementById('v1');
  3. var oDiv = document.getElementById('div1');
  4. var aInput = oDiv.getElementsByTagName('input');
  5.  
  6. var oDiv2 = document.getElementById('div2');
  7. var oDiv3 = document.getElementById('div3');
  8. var oDiv4 = document.getElementById('div4');
  9. var oDiv5 = document.getElementById('div5');
  10.  
  11. var timer = null;
  12.  
  13. //播放暂停
  14. aInput[0].onclick = function(){
  15.  
  16. if(oV.paused){
  17. this.value = '暂停';
  18. oV.play();
  19. toShow();
  20. timer = setInterval(toShow,1000);
  21. }
  22. else{
  23. this.value = '播放';
  24. oV.pause();
  25. clearInterval(timer);
  26. }
  27.  
  28. };
  29.  
  30. aInput[2].value = timeChange(oV.duration);
  31.  
  32. function timeChange(iAll){
  33.  
  34. iAll = Math.floor(iAll);
  35.  
  36. var hours = toZero(parseInt(iAll/3600));
  37. var mintus = toZero(parseInt(iAll%3600/60));
  38. var sends = toZero(parseInt(iAll%60));
  39.  
  40. return hours + ":" + mintus + ":" + sends;
  41.  
  42. }
  43.  
  44. function toZero(num){
  45. if(num<10){
  46. return '0' + num;
  47. }
  48. else{
  49. return '' + num;
  50. }
  51. }
  52.  
  53. function toShow(){
  54. aInput[1].value = timeChange(oV.currentTime);
  55.  
  56. var scale = oV.currentTime/oV.duration;
  57.  
  58. oDiv3.style.left = scale * (oDiv2.offsetWidth - oDiv3.offsetWidth) + 'px';
  59.  
  60. }
  61.  
  62. //静音
  63. aInput[3].onclick = function(){
  64. if(oV.muted){
  65. this.value = '静音';
  66. oV.muted = false;
  67. oDiv5.style.left = oV.volume*(oDiv4.offsetWidth - oDiv5.offsetWidth) + 'px';
  68. }
  69. else{
  70. this.value = '消除静音';
  71. oV.muted = true;
  72. oDiv5.style.left = 0;
  73. }
  74. };
  75.  
  76. var disX = 0;
  77.  
  78. //进度调整
  79. oDiv3.onmousedown = function(ev){
  80. var ev = ev || window.event;
  81. disX = ev.clientX - oDiv3.offsetLeft;
  82.  
  83. document.onmousemove = function(ev){
  84. var ev = ev || window.event;
  85.  
  86. var L = ev.clientX - disX;
  87.  
  88. if(L<0){
  89. L = 0;
  90. }
  91. else if(L>oDiv2.offsetWidth - oDiv3.offsetWidth){
  92. L = oDiv2.offsetWidth - oDiv3.offsetWidth;
  93. }
  94.  
  95. oDiv3.style.left = L + 'px';
  96.  
  97. var scale = L/(oDiv2.offsetWidth - oDiv3.offsetWidth);
  98.  
  99. oV.currentTime = scale * oV.duration;
  100.  
  101. toShow();
  102.  
  103. };
  104. document.onmouseup = function(){
  105.  
  106. aInput[0].value = '暂停';
  107. oV.play();
  108. toShow();
  109. timer = setInterval(toShow,1000);
  110.  
  111. document.onmousemove = null;
  112. document.onmouseup = null;
  113. };
  114. return false;
  115. };
  116.  
  117. var disX2 = 0;
  118.  
  119. //声音
  120. oDiv5.onmousedown = function(ev){
  121. var ev = ev || window.event;
  122. disX2 = ev.clientX - oDiv5.offsetLeft;
  123.  
  124. document.onmousemove = function(ev){
  125. var ev = ev || window.event;
  126.  
  127. var L = ev.clientX - disX2;
  128.  
  129. if(L<0){
  130. L = 0;
  131. }
  132. else if(L>oDiv4.offsetWidth - oDiv5.offsetWidth){
  133. L = oDiv4.offsetWidth - oDiv5.offsetWidth;
  134. }
  135.  
  136. oDiv5.style.left = L + 'px';
  137.  
  138. var scale = L/(oDiv4.offsetWidth - oDiv5.offsetWidth);
  139.  
  140. oV.volume = scale;
  141.  
  142. };
  143. document.onmouseup = function(){
  144. document.onmousemove = null;
  145. document.onmouseup = null;
  146. };
  147. return false;
  148. };
  149.  
  150. //全屏
  151. aInput[4].onclick = function(){
  152.  
  153. oV.webkitRequestFullScreen();
  154.  
  155. };
  156.  
  157. };

  HTML5实战与剖析之媒体元素(5、视频实例)就为大家介绍到这里,模拟视频播放器的小样例差点儿把经常使用的小功能。

这个小样例只能在支持HTML5的视频标签的浏览器中播放。很多其它有关HTML5的相关知识尽在梦龙小站的HTML5实战与剖析部分,感谢大家的支持。

HTML5实战与剖析之媒体元素(6、视频实例)的更多相关文章

  1. HTML5实战与剖析之媒体元素(3、媒体元素的事件及方法)

    HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. ...

  2. HTML5实战与剖析之媒体元素

    随着HTML5的到来,flash在手机端全部不能得到支持,这就使一项以flash制作的音乐播放和视频播放只能用HTML5中的媒体标签video标签和audio标签来制作了.很恰巧的是,移动端对HTML ...

  3. HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)(转)

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

  4. HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)

    可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像 ...

  5. (转)HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)

    HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...

  6. HTML5实战与剖析之原生拖拽(一拖拽历史概述)

    提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页 ...

  7. HTML5实战与剖析之跨文档消息传递(iframe传递信息)

    在来自不同域名的页面间传递消息一般统称为跨文档消息传送,简称XDM.如,www.leemagnum.com域中的页面与位于一个内嵌框架中的http://blog.csdn.net/lee_magnum ...

  8. HTML5实战与剖析之字符集属性(charset和defaultCharset)

    HTML5对字符集属性也进行了更新,其中charset和defaultCharset属性就是HTML5中新添加的字符集属性.有关charset和defaultCharset属性的具体讲解尽在HTML5 ...

  9. HTML5中支持新的媒体元素有这些

    HTML5对媒体的支持性很强,支持以下媒体元素: · audio  定义音频 · video  定义视频 · embed  作为外部应用的容器 · source  多种媒体源的支持 · track   ...

随机推荐

  1. 使用windos电脑模拟搭建web集群(一)

    资源规划 1.环境准备 centos7.2 虚拟机 13个 可以先配置一台,做好基础优化,然后克隆13台分布在 windos宿主机上 两台windos笔记  都是8g的内存 一台有点内存吃紧. 没有物 ...

  2. Netty源码学习(零)前言

    本系列文章将介绍Netty的工作机制,以及分析Netty的主要源码. 基于的版本是4.1.15.Final(2017.08.24发布) 水平有限,如有谬误请留言指正 参考资料 the_flash的简书 ...

  3. HDU 1171 Big Event in HDU【01背包/求两堆数分别求和以后的差最小】

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...

  4. NYOJ 71 乘船问题【贪心】

    时间复杂度O(n) 有n个人,第i个人的重量为w[i],每艘船的最大载重量均为c,且最多只能乘两个人.用最少的船装载所有人. 思路:从最轻的开始考虑,让最轻的和最重的一条船,若超出重量则可判定最重的只 ...

  5. log4j - 1

    具体内容: 1.       如何在项目中配置log4j使得该系统可以输出web test的日志文件(自定义格式)到工程dist目录下的junitLog/WebTestLog.log目录下,输出508 ...

  6. yum安装openresty

    在群里看到春哥发的,先记录下来.一切都以官网为准,以后安装部署生态会越来越完善的. OpenResty 官方现在开始维护自己的打包虚机集合了,新的 linux 包仓库正在陆续登陆 openresty. ...

  7. php升级版本

    Centos下Yum安装PHP5.5,5.6,7.0 默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | ...

  8. (转)Unity3d使用心得(1):ModelImporter的使用、在代码中添加动画片段。

    在使用 Unity3d 倒入Fbx模型的时候,动画的动画片段需要自己手动添加模型多了以后会是一个不小的工作量. Unity3d支持 编辑器脚本来控制资源导入的过程.添加一个 AssetPostproc ...

  9. 四. Java继承和多态9. 类与类之间的关系

    类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...

  10. Could not automatically select an Xcode project

    当把CocoaPods生成的workspace移动到上层目录时,需要改下Pods.xcconfig和工程里的一些设置,就通常没什么难度. 当遇到这个问题时: Could not automatical ...