HTML5制作酷炫音频播放器插件图文教程

 

上图便是这个音频播放器的UI界面图,里面还隐藏了一个歌曲的播放列表。整个播放器的UI除了大背景的人像图和歌曲的星星评分使用了图片其他全部由CSS和font-face绘制而成,看上去有难度的地方就只有CD和打碟器的制作了,在歌曲播放时CD和打碟器都是具有动画交互效果的,这个在后面的部分会讲解到。点击播放器的CD可以打开播放列表噢~

因为这一期的教程主要是为了展示Html5新增的<audio>标签和audio元素的Dom API的使用,所以播放器UI的绘制在这里就不详细解释了,有疑问的可以自行查看案例的CSS文件的注释或者在下方留言。

主要功能:

一、播放、暂停、上一首、下一首、音量增减

二、点击CD可以打开和关闭播放列表

三、可以拖动本地音乐文件到播放器进行播放

Html结构
 

代码如下:

<div id="myAudio" style="margin:0 auto;">
<audio>
<source title="王若琳 - Wild World.mp3" src="<a href="http://music.huoxing.com/upload/20121215/1355575227640_8200.mp3">
http://music.huoxing.com/upload/20121215/1355575227640_8200.mp3</a>" />
<source title="韦礼安 - 还是会.mp3" src="<a href="http://stream18.qqmusic.qq.com/31005070.mp3">http://stream18.qqmusic.qq.com/31005070.mp3</a>" />
<source title="王若琳 - Lost in paradise.mp3" src="<a href="http://stream12.qqmusic.qq.com/30416842.mp3">http://stream12.qqmusic.qq.com/30416842.mp3</a>" />
</audio>
<div class="music_info clearfix">
<div class="cd_holder"><span class="stick"></span><div class="cd"></div></div>
<div class="meta_data">
<span class="title"></span>
<div class="rating">
<div class="starbar">
<ul class="current-rating" data-score="85">
<li class="star5"></li>
<li class="star4"></li>
<li class="star3"></li>
<li class="star2"></li>
<li class="star1"></li>
</ul>
</div>
</div>
<div class="volume_control">
<a class="decrease">a</a>
<span class="base_bar">
<span class="progress_bar"></span>
<a class="slider"></a>
</span>
<a class="increase">b</a>
</div>
</div>
</div>
<ul class="music_list"></ul>
<div class="controls">
<div class="play_controls">
<a class="btn_previous">e</a>
<a class="btn_play">c</a>
<a class="btn_next">d</a>
</div>
<div class="time_line">
<span class="passed_time">0:00</span>
<span class="base_bar">
<span class="progress_bar"></span>
</span>
<span class="total_time">0:00</span>
</div>
</div>
</div>

 

audio标签

在上面的结构中我们可以发现这个html5新增的audio标签,它具有一个controls属性,顾名思义它是播放器的控制器,controls 属性规定浏览器为音频提供播放控件,例如在chrome浏览器下的audio标签中设置该属性,播放器就会以如下的形式出现,如果不设置该属性,则会是空白一片

 
代码如下:
<audio controls src="xxx.mp3"></audio>

但由于在不同浏览器下的对audio标签渲染效果不一,这种简易的方法并不适合在跨浏览器下的使用,并且浏览器默认的播放器控件所提供的功能实在是太少了。。所以我们一般通过不设置该属性的方法来隐藏浏览器的默认播放控件,并且手工加入额外的标签和样式来定制播放器的UI界面。

播放控制

在播放器的UI界面绘制完成后,首先我们需要做的是为播放、上一首、下一首这三个主要的控制按钮添加对应的事件监听。

 

复制代码
代码如下:

var myAudio = $("#myAudio audio")[0];
var $sourceList = $("#myAudio source");
var currentSrcIndex = 0;
var currentSr = "";

 

 

复制代码
代码如下:

$(".btn_play").click(function(){
if (myAudio.paused) {
myAudio.play();
} else {
myAudio.pause();
}
});
$(".btn_next").click(function(){
++currentSrcIndex > $sourceList.length - 1 && (currentSrcIndex = 0);
currentSrc = $("#myAudio source").eq(currentSrcIndex).prop("src");
myAudio.src = currentSrc;
myAudio.play();
});
$(".btn_previous").click(function(){
--currentSrcIndex < 0 && (currentSrcIndex = 0);
currentSrc = $("#myAudio source").eq(currentSrcIndex).prop("src");
myAudio.src = currentSrc;
myAudio.play();
});

 

上述的按钮点击的事件监听中,我们通过调用原始的audio元素的play()和pause()方法来控制音频的播放和暂停。另外audio元素提供了currentSrc属性,该属性表示当前播放文件的文件源,我们通过设置该属性来控制当前播放的歌曲曲目。

音量控制

接下来我们来对音量条两边的两个小喇叭添加事件监听,使得通过点击左右两个小喇叭可以减小和增加当前播放的音量。要设置播放器的音量,我们可以调用audio元素中所提供的volume属性。volume值最大为1,最小为0,在这里我们通过每次点击喇叭增减0.1的音量来实现音量的控制。当然你也可以使用别的值。但要注意的是javascript语言不能对小数提供精准的控制,所以每次减少0.1的音量时实际上减少的音量是稍微地大于0.1的,这导致当连续点击9次音量减少的按钮时剩下0.09xxxx的音量,然后你会发现播放器怎么无法静音了。。。当然这个问题是很容易解决的(如下所示),只是稍作提醒。

 
代码如下:

$(".volume_control .decrease").click(function() {
var volume = myAudio.volume - 0.1;
volume < 0 && (volume = 0);
myAudio.changeVolumeTo(volume);
});
$(".volume_control .increase").click(function() {
var volume = myAudio.volume + 0.1;
volume > 1 && (volume = 1);
myAudio.changeVolumeTo(volume);
});

另外我们还需要实现使用滑动器或者点击音量条某一位置来调控音量的功能,有了上面的基础,这个就容易完成了。首先我们来看看点击音量条某一位置来调控音量的功能:点击音量条的某一位置,计算该由音量条的起点到该位置的长度值,再用该值除以总的音量条长度(在这里是100)得到百分比值,再用该百分比值乘以最大音量值1得到所要跳跃到的音量值,再赋值给volume。通过滑动器来调控音量的方法实现也与此类似,主要是要懂得如何计算滑动器在音量条的位置值。在此就不做详细解释,有问题可以下方留言。

 

代码如下:

$(".volume_control .base_bar").mousedown(function(ev){
var posX = ev.clientX;
var targetLeft = $(this).offset().left;
var volume = (posX - targetLeft)/100;
volume > 1 && (volume = 1);
volume < 0 && (volume = 0);
myAudio.changeVolumeTo(volume);
});
$(".volume_control .slider").mousedown(starDrag = function(ev) {
ev.preventDefault();
var origLeft = $(this).position().left; /*滑块初始位置*/
var origX = ev.clientX; /*鼠标初始位置*/
var target = this;
var progress_bar = $(".volume_control .progress_bar")[0];
$(document).mousemove(doDrag = function(ev){
ev.preventDefault();
var moveX = ev.clientX - origX; /*计算鼠标移动的距离*/
var curLeft = origLeft + moveX; /*用鼠标移动的距离表示滑块的移动距离*/
(curLeft < -7) && (curLeft = -7);
(curLeft > 93) && (curLeft = 93);
target.style.left = curLeft + "px";
progress_bar.style.width = curLeft + 7 + "%";
myAudio.changeVolumeTo((curLeft + 7)/100);
});
$(document).mouseup(stopDrag = function(){
$(document).unbind("mousemove",doDrag);
$(document).unbind("mouseup",stopDrag);
});
});

 

时间控制

好了,现在播放器已经基本能用了,但我们还希望能够直接跳过音频的一部分到特定的时间点。那么要怎么实现呢??!制定标准的委员们也不是傻子,这种常用的功能是不会有所疏漏的拉~所以赶紧翻翻API吧,你会发现audio元素提供了一个名为currentTime的属性,非常简明易懂的名称(其实大多属性都是很好理解的),设置该属性可以设置当前播放的时间点。

在这里,我们还需要使用audio的另一个属性duration,该属性指的是当前播放文件的总时间长度。因此根据音量控制的实现,我们可以这样做:

一、点击进度条的某一位置,计算该由进度条的起点到该位置的长度占总进度条长度的百分比值(例如点击进度条的正中间位置,则进度条的起点到该位置的长度占总进度条长度的50%),记为percentage。

二、然后用percentage乘以文件的总时间长度duration就得到了你想要跳跃到的时间点的值,再把该值赋给currentTime即完成了所要实现的功能。

代码如下:

$(".time_line .base_bar").mousedown(function(ev){
var posX = ev.clientX;
var targetLeft = $(this).offset().left;
var percentage = (posX - targetLeft)/140 * 100;
myAudio.currentTime = myAudio.duration * percentage / 100;
});

到这里,播放器已经基本成型了。剩下一些无关痛痒(其实对我来说才是最重要的哈哈)的UI交互实现,如果大家有兴趣的话就到源码中查看吧,有问题可以在下方评论留言,希望能多多交流和学习。

时间: 2024-10-16 04:53:52

HTML5制作酷炫音频播放器插件图文教程的相关文章

Photoshop制作酷炫个性的qq透明头像教程

给各位photoshop软件的使用者们来详细的解析分享一下制作酷炫个性的qq透明头像的教程. 教程分享: 首先,安装ps,下面有链接介绍,打开ps,新建一个图层,设置为透明.     用画笔,在图层中花个笔画,然后把这个笔迹移动到看不见的地方(图层以外,最好留下一点点)如图所示     然后打开下面的视频帧,复制到3个,如下图所示       然后,打开上面的菜单-文件-储存为web格式保存图片为gif格式       打开qq,选择保存后的哪张图,可见透明头像制作成功         注意事项

15个可集成到WordPress的免费HTML5音频播放器

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 有时候,浏览一些网站或者博客的时候可见到它们会插入一个音频播放器,可以播放音乐,这样可以增加吸引力.接下来将为大家介绍15个基于HTML5技术可以嵌入到WordPress或者其它网站的免费音频播放器. HTML5这是一项具有革命性的技术,未来的应用程序都将基于HTML5.HTML5加CSS3一起的话可以打造出非常美观和先进的网站,未来的网页设

HTML5响应式可触控的音频播放器实现例子

HTML5的audio提供了音频播放功能,但是原生的播放器样式不怎么好看,而且各浏览器对audio的外观展现不统一.我们可以对audio稍微包装下,便可实现一个响应式的可触控的漂亮的播放器. HTML   <audio preload="auto" controls autoplay>     <source src="audio.wav" />     <source src="audio.mp3" />  

PS制作精美音频播放器界面

教程就是教大家用Photoshop创建一个时髦音频播放器界面,也是新勺网特别推荐给大家的一个教程,教程中的高光处理是重点,也是一些常用软件界面制作的处理方法.希望对大家有所帮助. 最终效果: 教程需要素材: Spiderman Pattern 步骤 1 创建一个 600×400 px的图层. 步骤 2 使用放射式渐变填充背景,颜色设置为#5e6c78 --#20282e 步骤 3

仿酷狗音乐播放器开发日志二十——换肤功能背景图片控件的制作(附源码)

转载请说明原出处,谢谢~~           <仿酷狗音乐播放器开发日志二十>里做了换肤功能的一部分,今天完成其他的部分.酷狗的换肤窗口里的背景图可以让用户选择来换图,原酷狗的背景图的小图标,有normal.hover.down等多种状态,鼠标移动上去便会发生变化.如图        当鼠标经过时会有个黑色图片覆盖,边框变为浅蓝色.并且在他上面显示出作者的一些信息.要实现这个效果应该另外开发一个控件来支持动态的信息展示效果.我把这个小控件的开发过程和源码发一下,给学习做duilib控件的新手

在主页中编制音频播放器

虽然Netscape和IE都支持音频文件的播放,但在制作过程中还是遇到了这样一个问题: 如果用隐藏方式播放则没有声卡的用户要出错,影响主页的整体效果.编一个既便于用户控制又能给页面起到点缀作用的音频播放器不失为一个好办法.下面详细介绍用JavaScript 自编音频播放器的方法. 1. Netscape的音频播放器 1)直接打开 Netscape支持.mid. .wav和.au等音频文件格式,您可以在浏览器中直接打开上述文件,打开时出现如下图的播放器窗口并自动播放一次,继续播放可单击"PLAY&

高级音频播放器foobar2000 1.3.2正式版下载

foobar2000 是一个 Windows 平台下的高级音频播放器.包含完全支持 unicode 及支持播放增益的高级标签功能. 特色:* 支持的音频格式: MP3, MP4, AAC, CD Audio, WMA, Vorbis,  FLAC, WavPack, WAV, AIFF, Musepack, Speex, AU, SND, 通过第三方插件将支持更多的格式. foobar2000 1.3.2 Final: Improved handling of FLAC files with m

gst123 0.3.0发布 音频播放器

gst123 是一个基于GStreamer的命令行http://www.aliyun.com/zixun/aggregation/12471.html">音频播放器,用于mpg123和ogg123风格的音频.其主要特点是可以播放每一个GStreamer文件.FLAC.OGG和MP3文件,以及混合音乐集.当前新版本的gst123额外支持播放视频文件. gst123 0.3.0该版本支持基于GNU/Hurd的在音频播放和修复编译的可视化插件. 软件信息:http://space.twc.de/

仿酷狗音乐播放器已开源!

转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/41037875        距离我发布测试版的Redrain音乐盒(仿酷狗播放器),现在正好刚2个月.博客留言和QQ群里也一直有网友关心这个小项目开源的问题.先感谢网友对这个小项目的支持.之前我一直担心版权问题而没有开源这个项目,因为我只是个在校大学生,不想惹麻烦,希望大家体谅!       关于这个Redrain音乐盒的发布程序的说明和使用方法,见<Redrain仿酷狗音