Html5 Video是现在html5最流行的功能之一,得到了大多数最新版本的浏览器支持。但是不同的浏览器提供了不同的原生态浏览器视频空间,得到的默认外观并不一样。本文描述了使用javascript、css来自定义媒体播放器的步骤,使媒体元素可以在各浏览器下有相同的样式,同时加深理解HTML5媒体元素API的使用。
传统的web设计,要在网页中嵌入视频的最可靠最常用的办法是使用Flash,通过使用object和embed标签,就可以通过浏览器播放swf等格式的视频文件,但是前提是浏览器必须安装第三方插件:Adobe Flash Player。 HTML5的到来改变了这种情况,WEB开发者只需要使用video标签就可以轻松加载视频文件,而不需要任何第三方插件。
如上图实现只需写如下代码:
<div> <video id="myVideo" controls poster="2.BMP" width="620 " height="460" > <source src="1.mp4" type="video.mp4" /> </div>
下面开始自定义html5多媒体播放控件
首先开始布局:
<div id="box"> <!-- 播放暂停按钮 --> <div id="play" class="play"></div> <!-- 进度条 --> <div id="progress"> <div id="control"></div> <span id="bar"></span> </div> <!-- 喇叭--> <div id="sound" class="soundon"></div> <!-- 声音控制 --> <div id="volume"> <div id="volume-control"></div> <span id="volume-bar"></span> </div> <div id="full"></div> </div>
获取对象
在JavaScript中我们使用getElementById(”)来获取相关video对象
window.onload=function () { // box对象 var box=document.getElementById("box"); // 播放按钮 var play=document.getElementById("play"); // 视频对象 var video=document.getElementById("video"); //进度条 var progress=document.getElementById("progress"); //灰色进度条 var bar=document.getElementById("bar"); //控制按钮 var control=document.getElementById("control"); //喇叭 var sound=document.getElementById("sound")
播放视频进度条
//进度条 video.addEventListener("timeupdate",function () { var scales=video.currentTime/video.duration; bar.style.width=progress.offsetWidth*scales+"px"; control.style.left=progress.offsetWidth*scales+"px"; },false); //进度条推拽 control.onmousedown=function(e){ video.pause(); document.onmousemove=function(e){ var leftv=e.clientX-progress.offsetLeft-box.offsetLeft; if(leftv<=0){ leftv=0; } if(leftv>=progress.offsetWidth) { leftv=progress.offsetWidth; } control.style.left=leftv+"px"; } document.onmouseup=function(){ var scales=control.offsetLeft/progress.offsetWidth; video.currentTime=video.duration*scales; video.play(); document.onmousemove=null; document.onmouseup=null; } }
Video Play/Pause Controls 播放/暂停 按钮
// 播放/暂停控制方法 play.onclick=function(){ if(video.paused){ play.className="pause"; video.play(); } else{ play.className="play"; video.pause(); } }
设计播放按钮与声音按钮
//播放按钮 .play{ width:0px; height:0px; border-left:16px solid #fff; border-top:12px solid rgba(255,255,255,0); border-bottom:12px solid rgba(255,255,255,0); margin-left: 10px; margin-top: 7px; float: left; cursor:pointer; } .pause{ width: 6px; height: 18px; border-left: 4px solid #fff; border-right: 4px solid #fff; float:left; margin-top: 7px; margin-left: 10px; cursor:pointer; } //声音按钮 .soundon{ width:10px; height:6px; border-right:10px solid #fff; border-top:9px solid rgba(255,255,255,0); border-bottom:9px solid rgba(255,255,255,0); margin-left: 10px; margin-top: 7px; float: left; cursor:pointer; } .soundoff{ width:10px; height:6px; border-right:10px solid #000; border-top:9px solid rgba(255,255,255,0); border-bottom:9px solid rgba(255,255,255,0); margin-left: 10px; margin-top: 7px; float: left; cursor:pointer; }
全屏播放
//全屏 var full=document.getElementById("full") full.addEventListener("click",function(){ // video.mozRequestFullScreen()//火狐浏览器 video.webkitRequestFullScreen()//谷歌浏览器 }
html5中<video>标签的详细属性说明如下:
属性 | 值 | 描述 |
autoplay | true | false | 如果是 true,则视频在就绪后马上播放。 |
controls | true | false | 如果是 true,则向用户显示控件,比如播放按钮。 |
height | 像素 | 设置视频播放器的高度。 |
loop | true | false | 完成播放后再次开始播放,即循环播放 |
poster | url | 当视频未响应或缓冲不足时,该属性值链接到一个图像。该图像将以一定比例被显示出来 |
src | url | 所播放视频的 url。使用子元素 <source> 实现更好。 |
width | 像素 | 设置视频播放器的宽度。 |
说点什么
欢迎讨论