HTML5实战与剖析之媒体元素(6、视频实例)
HTML5中的视频标签和及其模仿视频播放器的效果在一些手机端应用比較多。由于手机端基本上废除了flash的独断。让HTML5当家做主人,所以对视频支持的比較好。
所以今天专门为大家奉上HTML5视频标签模拟视频播放器的小样例,让大家更好的理解HTML5和有效的应用在项目中。
HTML代码
<!-- src中放上本地的ogv的音频 -->
<video id="v1" src="Intermission-Walk-in.ogv"></video>
<div id="div1">
<input type="button" value="播放" />
<input type="button" value="00:00:00" />
<input type="button" value="00:00:00" />
<input type="button" value="静音" />
<input type="button" value="全屏" />
</div>
<div id="div2">
<div id="div3"></div>
</div> <div id="div4">
<div id="div5"></div>
</div>
CSS代码
#div2{ width:300px; height:30px; background:#666666; position:relative;}
#div3{ width:30px; height:30px; background:red; position:absolute; left:0; top:0;}
#div4{ width:300px; height:20px; background:#666666; position:relative; top:10px;}
#div5{ width:20px; height:20px; background:yellow; position:absolute; right:0; top:0;}
JavaScript代码
window.onload = function(){
var oV = document.getElementById('v1');
var oDiv = document.getElementById('div1');
var aInput = oDiv.getElementsByTagName('input');
var oDiv2 = document.getElementById('div2');
var oDiv3 = document.getElementById('div3');
var oDiv4 = document.getElementById('div4');
var oDiv5 = document.getElementById('div5');
var timer = null;
//播放暂停
aInput[0].onclick = function(){
if(oV.paused){
this.value = '暂停';
oV.play();
toShow();
timer = setInterval(toShow,1000);
}
else{
this.value = '播放';
oV.pause();
clearInterval(timer);
}
};
aInput[2].value = timeChange(oV.duration);
function timeChange(iAll){
iAll = Math.floor(iAll);
var hours = toZero(parseInt(iAll/3600));
var mintus = toZero(parseInt(iAll%3600/60));
var sends = toZero(parseInt(iAll%60));
return hours + ":" + mintus + ":" + sends;
}
function toZero(num){
if(num<10){
return '0' + num;
}
else{
return '' + num;
}
}
function toShow(){
aInput[1].value = timeChange(oV.currentTime);
var scale = oV.currentTime/oV.duration;
oDiv3.style.left = scale * (oDiv2.offsetWidth - oDiv3.offsetWidth) + 'px';
}
//静音
aInput[3].onclick = function(){
if(oV.muted){
this.value = '静音';
oV.muted = false;
oDiv5.style.left = oV.volume*(oDiv4.offsetWidth - oDiv5.offsetWidth) + 'px';
}
else{
this.value = '消除静音';
oV.muted = true;
oDiv5.style.left = 0;
}
};
var disX = 0;
//进度调整
oDiv3.onmousedown = function(ev){
var ev = ev || window.event;
disX = ev.clientX - oDiv3.offsetLeft;
document.onmousemove = function(ev){
var ev = ev || window.event;
var L = ev.clientX - disX;
if(L<0){
L = 0;
}
else if(L>oDiv2.offsetWidth - oDiv3.offsetWidth){
L = oDiv2.offsetWidth - oDiv3.offsetWidth;
}
oDiv3.style.left = L + 'px';
var scale = L/(oDiv2.offsetWidth - oDiv3.offsetWidth);
oV.currentTime = scale * oV.duration;
toShow();
};
document.onmouseup = function(){
aInput[0].value = '暂停';
oV.play();
toShow();
timer = setInterval(toShow,1000);
document.onmousemove = null;
document.onmouseup = null;
};
return false;
};
var disX2 = 0;
//声音
oDiv5.onmousedown = function(ev){
var ev = ev || window.event;
disX2 = ev.clientX - oDiv5.offsetLeft;
document.onmousemove = function(ev){
var ev = ev || window.event;
var L = ev.clientX - disX2;
if(L<0){
L = 0;
}
else if(L>oDiv4.offsetWidth - oDiv5.offsetWidth){
L = oDiv4.offsetWidth - oDiv5.offsetWidth;
}
oDiv5.style.left = L + 'px';
var scale = L/(oDiv4.offsetWidth - oDiv5.offsetWidth);
oV.volume = scale;
};
document.onmouseup = function(){
document.onmousemove = null;
document.onmouseup = null;
};
return false;
};
//全屏
aInput[4].onclick = function(){
oV.webkitRequestFullScreen();
};
};
HTML5实战与剖析之媒体元素(5、视频实例)就为大家介绍到这里,模拟视频播放器的小样例差点儿把经常使用的小功能。
这个小样例只能在支持HTML5的视频标签的浏览器中播放。很多其它有关HTML5的相关知识尽在梦龙小站的HTML5实战与剖析部分,感谢大家的支持。
HTML5实战与剖析之媒体元素(6、视频实例)的更多相关文章
- HTML5实战与剖析之媒体元素(3、媒体元素的事件及方法)
HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. ...
- HTML5实战与剖析之媒体元素
随着HTML5的到来,flash在手机端全部不能得到支持,这就使一项以flash制作的音乐播放和视频播放只能用HTML5中的媒体标签video标签和audio标签来制作了.很恰巧的是,移动端对HTML ...
- HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)(转)
HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...
- HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)
可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像 ...
- (转)HTML5实战与剖析之触摸事件(touchstart、touchmove和touchend)
HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享.今天为大家介绍的事件主 ...
- HTML5实战与剖析之原生拖拽(一拖拽历史概述)
提起拖拽,我就想起了在JavaScript培训的时候一个非常好玩的效果,那就是拖拽了.可以用鼠标任意拖拽着一个物体到任何你想去的地方. 最早拥有JavaScript拖拽功能的是IE4浏览器.当时,网页 ...
- HTML5实战与剖析之跨文档消息传递(iframe传递信息)
在来自不同域名的页面间传递消息一般统称为跨文档消息传送,简称XDM.如,www.leemagnum.com域中的页面与位于一个内嵌框架中的http://blog.csdn.net/lee_magnum ...
- HTML5实战与剖析之字符集属性(charset和defaultCharset)
HTML5对字符集属性也进行了更新,其中charset和defaultCharset属性就是HTML5中新添加的字符集属性.有关charset和defaultCharset属性的具体讲解尽在HTML5 ...
- HTML5中支持新的媒体元素有这些
HTML5对媒体的支持性很强,支持以下媒体元素: · audio 定义音频 · video 定义视频 · embed 作为外部应用的容器 · source 多种媒体源的支持 · track ...
随机推荐
- C++内联汇编,输出人物名字
DWORD PeopleBase =0x9CD674;//天龙人物基址 //获取人物名称 char * CData::GetPeopleName() { char * name="& ...
- cloudflare 301 重定向设置
https://support.cloudflare.com/hc/en-us/articles/218411427#redirects 将 https://dfg.com/* 设置301重定向到 h ...
- [BZOJ1032][JSOI2007]祖码Zuma 区间dp
1032: [JSOI2007]祖码Zuma Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1105 Solved: 576 [Submit][S ...
- 利用Lambda获取类中属性名称
public class TypeInfoHelper { public static string GetPropertyName<T>(Expression<Func<T, ...
- HDU 6108.小C的倍数问题 (2017"百度之星"程序设计大赛 - 初赛(A)1001)
补完题?不存在的. 这么久了,还是一条咸鱼,看一堆乱七八糟的东西,写一堆没用的水题,一点进步都没有,还是那么菜,菜的掉渣. 这个百毒之星初赛A还会写两道最简单的水题,初赛B一点也不会,菜的难过... ...
- JDBC二部曲之_入门
JDBC 1 什么是JDBC? JDBC(Java DataBase Connectivity),即Java数据库连接!也就是说,Java程序员可以使用JDBC API来操作数据库. 最早JDBC是J ...
- Spring 依赖注入(控制反转)介绍
耦合性是软件工程中的一个重要概念.对象之间的耦合性就是对象之间的依赖性.对象之间的耦合越高,维护成本越高.因此对象的设计应使类和构件之间的耦合最小. spring Ioc思想 控制翻转也就是sprin ...
- 内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]
在环境里是没有问题的 就是发布网站后,会出现“/”应用程序中的服务器错误.--------------------------------------------------------------- ...
- Android使用 SO 库时要注意的一些问题
常和 SO 库开发打交道的同学来说已经是老生长谈,但是既然要讨论一整个动态加载系列,我想还是有必要说说使用 SO 库时的一些问题. 在项目里使用 SO 库非常简单,在 加载 SD 卡中的 SO 库 中 ...
- JComboBox添加item的赋值类型问题!不一致的话会导致不能更改jcombobox的选择值
在用swing做页面的时候,往往需要设置字体样式,那么,如何用一种方法设置字体之后,在后面的其他页面就不需要再次设置字体了呢? 下面这个方法就可以解决了: JComboBox在对它进行添加子项的时候, ...