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、视频实例)

时间: 2024-10-14 04:10:55

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

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

HTML5中的媒体元素除了拥有非常多的属性之外,video标签和audio标签还能够出发非常多事件和方法. 这些方法监控着不同的属性的变化,这些变化有可能是媒体播放的结果,也可能是用户操作媒体的结果. 以下就为大家開始介绍媒体元素的相关事件. abort:触发时机是下载中断. canplay:在能够播放的时候,readyState的值为2的时候触发. canplaythrough:readyState的值为3的时候,触发.播放能够继续,而应该不会中断的时候触发. canshowcurrentfr

HTML5实战与剖析之媒体元素

随着HTML5的到来,flash在手机端全部不能得到支持,这就使一项以flash制作的音乐播放和视频播放只能用HTML5中的媒体标签video标签和audio标签来制作了.很恰巧的是,移动端对HTML5中的媒体标签video标签和audio标签支持的非常好.这就使HTML5在移动端很流行. video标签和audio标签也提供了很实用的JavaScript API,允许创建自定义的控件.两个标签的用法如下. HTML代码 view source print? 1.<!-- 视频标签 --> 2

HTML5实战与剖析之媒体元素(4、检测编解码器的支持和Audio构造函数)

HTML5媒体元素检测编解码器的支持情况 虽然媒体元素可以实现音频和视频功能,但是并不是所有浏览器都支持video标签和audio标签的所有编解码器,这意味着开发人员必须提供很多歌媒体来源.在JavaScript API中能够检测浏览器是否支持某种格式和编解码器.这两个媒体元素都有一个canPlayType()方法,该方法接收一种格式/编解码器字符串,返回"probably"."maybe"或者""(空字符串).空字符串是假值,而"pr

HTML5实战与剖析之历史管理(history对象)

HTML5新添加了对历史的管理,更新了history对象让管理历史状态更加方便了.在现代Web应用中,用户可以通过"前进"和"后退"按钮进行历史页面的切换.这让一些不在新页面中打开的新页面前进后退自如,提高了用户体验. 通过haschange事件,可以知道URL的参数什么时候发生了变化,也就是什么时候该有所反应.通过状态管理的API,能够在不加载新页面的情况下改变浏览器的URL.所以需要使用history.pushState()方法.history.pushStat

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

可拖动dragable属性 之前我们已经为大家介绍过几篇有关HTML5中原生拖拽的相关知识了.今天为大家介绍HTML5拖拽中的其他一些小东东,闲话不多说赶快一起看看吧. 在默认情况下,链接.文本和图像是可以拖动的,不用再写代码即可拖动.如果想让其他元素标签也可以拖动,那么只有HTML5能实现了.HTML5为所有HTML元素规定了dragable属性,表示元素是否可以拖动.链接和图像的标签中自动将dragable属性自动被设置成true,其他元素的dragable属性的默认值是false. 支持d

HTML5实战与剖析之classList属性

classList属性究竟是干什么的,我们先撇下classList不管.我们考虑这么一个问题,那就是我们如何将拥有多个类名的元素中的其中一个类名删除呢?梦龙较劲脑汁儿终于想到一个实现的方法.将拥有类名li.meng和long,三个类名中的类名meng删除.代码如下 HTML代码 view source print? 1.<div class="li meng long">梦龙小站</div> JavaScript代码 view source print? 01.

HTML5实战与剖析之WebSockets简介

HTML5 WebSockets规范定义了一个API,允许web页面使用WebSockets协议与远程主机双向沟通.介绍了WebSocket接口,并定义了一种全双工通信通道,通过一个套接字在网络上.HTML5 WebSockets提供极大的减少了不必要的网络流量和延迟而不能攀登的轮询和长轮询的解决方案是用来模拟全双工连接通过维护两个连接. HTML5 WebSockets账户代理和防火墙等网络危害,使得流媒体可以在任何连接,和能够支持在单个连接上游和下游的通信,HTML5 WebSockets-

HTML5实战与剖析之Web存储机制(Web Storage)

Web Storage是以Key-Value的形式进行数据持久性存储.Web Storage是为了克服由cookie带来的一些限制而产生的.当数据需要被严格控制在客户端上的时候,无须持续地将数据发回服务器.Web Storage的目标有两个:提供一种存储会话数据的路径;提供存储大量可以跨会话存在的数据的机制. 最初的Web Storage规范包含了两个对象的定义:sessionStorage对象和globalStorage对象.这两个对象在支持的浏览器中都是以window对象属性的形式存在,支持

HTML5实战与剖析之离线应用

离线的Web应用,就是在设备不能上网的时候还能运行应用.HTML5把离线应用作为重点,主要是开发人员的心愿.离线应用的开发的步骤有:首先应该知道设备是否能够上网;然后应该还能访问一定的资源(如图像.CSS.JavaScript等),只有这样才能正常工作. 离线检测 想要开发离线Web应用第一步就得知道用户的设备的上网情况.HTML5为此定义了一个navigator.onLine属性,这个属性值为true的时候表示设备能够上网,表示false的时候表示设备不能上网.这个属性的关键在于浏览器必须知道