自己写的一个简单的音乐播放器, 主要实现了控制播放暂停,时间显示,音乐进度条点击以及拖动改变播放进度效果.

基于jquery编写,需要引入jquery.

HTML:

00:00:00

00:00:00

播放

CSS:

.progress{width:300px; height: 5px; background-color: #c2c2c4; position: relative; float: left; display: inline; margin-top: 5px; border-radius: 5px;}

.pgBar{width:0%; height: 5px; background-color: #e83c3c; position: absolute; left: 0; top:0; border-radius: 5px;}

.pgbtn{width:10px; height: 10px; border-radius: 50%; position: absolute; left: 0%; top:-4px; background-color: #fff; border:1px solid #c2c2c4; cursor: pointer;}

.showTime{float: left; display: inline; font-size: 12px; padding:0 10px;}

.controlsBox{clear: both; font-size: 13px; padding:20px; margin-left: 180px;}

.playBtn{cursor: pointer;}

JS代码:

/* 插件代码 */

$.fn.musicPlay = function(options){

var audio = $(this).find('.music')[0],

playBtn = $(this).find('.playBtn'),

showTimeL = $(this).find('.showTimeL'),

showTimeR = $(this).find('.showTimeR'),

pgBar = $(this).find('.pgBar'),

pgbtn = $(this).find('.pgbtn'),

progress = $(this).find('.progress'),

pgWidth = progress.width(),

totalTime = 0,setPosX = 0,pos_x,pos_parX,srcEle;

playBtn.bind('click',function(){

play();

})

progress.bind('click',function(e){

audio.currentTime = audio.duration*(e.offsetX / pgWidth);

})

pgbtn.bind('click',function(e){

e.preventDefault();

e.stopPropagation();

})

$(document).bind('mousedown',function(e){

srcEle = e.target;

if($(srcEle).hasClass('pgbtn')){

pos_x = e.pageX;

pos_parX = pgbtn.position().left;

audio.removeEventListener('timeupdate',updateProgress,false);

$(document).bind('mousemove',function(e){

e.preventDefault();

var xOff = e.pageX - pos_x,

curTime,

value = '';

setPosX = pos_parX + xOff,

setPosX = (setPosX <= 0) ? 0:setPosX;

setPosX = (setPosX > pgWidth) ? pgWidth:setPosX;

value = Math.round((Math.floor(setPosX) / Math.floor(pgWidth)) * 100,0);

curTime = calcTime(audio.duration * (setPosX / pgWidth));

showTimeL.html(curTime);

setplan(value);

})

}

})

$(document).bind('mouseup',function(e){

if($(srcEle).hasClass('pgbtn')){

$(document).unbind('mousemove');

audio.addEventListener('timeupdate',updateProgress,false);

var curTime = audio.duration * (setPosX / pgWidth);

if(curTime !== 0){

audio.currentTime = curTime;

}

}

})

audio.addEventListener('timeupdate',updateProgress,false);

audio.addEventListener('ended',audioEnded,false);

audio.addEventListener('pause',audioPause,false);

audio.addEventListener('play',audioPlay,false);

audio.addEventListener('canplaythrough',function(){

totalTime = calcTime(Math.floor(audio.duration));

showTimeR.html(totalTime);

},false);

function audioEnded(){

audio.currentTime = 0;

audio.pause();

}

function audioPause(){

playBtn.html('播放');

}

function audioPlay(){

playBtn.html('暂停');

}

function calcTime(time){

var hour,minute,second;

hour=String(parseInt(time/3600,10));

if (hour.length == 1) hour = '0' + hour;

minute=String(parseInt((time%3600)/60,10));

if (minute.length == 1) minute = '0' + minute;

second=String(parseInt(time%60,10));

if (second.length == 1) second = '0' + second;

return hour+":"+minute+":"+second;

}

function play(){

if(audio.paused){

audio.play();

}else{

audio.pause();

}

}

function updateProgress(){

var value = Math.round((Math.floor(audio.currentTime)/Math.floor(audio.duration))*100,0),

curTime = calcTime(Math.floor(audio.currentTime));

showTimeL.html(curTime);

setplan(value);

}

function setplan(val){

val = (val == 100)?98:val;

pgBar.css('width',val+'%');

pgbtn.css('left',val+'%');

}

}

/* 插件代码 end */

$(function(){

$("#musicBox").musicPlay();

})

html5中音乐播放器怎么写,html5简单音乐播放器相关推荐

  1. 在html5中 空标签可以不写,HTML5中标签之间尽量不要加enter或者空格

    HTM友,记基开前不接些前家我告对猿果水使钮控L5中如果标签之间随意使用换行或者空格可能会出现意向不朋支不器几事为的时后级功发发来久都这样含制层是请些间例业多在上屏屏有到随到的bug. 具体实例: 写 ...

  2. html5中div怎么横着写,html5:div 横向排列的方法

    div 横向排列的方法. 以下面这组 div 为例,wrap 的高度由内容撑开 div1 div2 div3 平时是这样的,上下排列~ float 浮动 #div1{ float: left; } # ...

  3. 12.写一个简单的发布器与订阅器(C++)

    写一个简单的发布器与订阅器(C++)(rawmeat:http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber(c%2B%2B)) 注意 ...

  4. html中的鼠标事件怎么写,html5中的鼠标事件以及鼠标事件属性

    鼠标事件 先列出html5中鼠标常见的一系列事件: 事件名称 描述 onclick 当单击鼠标时运行脚本 ondblclick 当双击鼠标时运行脚本 ondrag 当拖动元素时运行脚本 ondrage ...

  5. html5中怎么设置音频的位置,HTML5中音频的详细解析

    摘要 腾兴网为您分享:HTML5中音频的详细解析,智慧医疗,榛果民宿,猿辅导,优酷等软件知识,以及虚拟视频,天正建筑tarch8.5,跟谁学登录,照片回收站,医学生简历模板,重复文件删除,卡农社区,招 ...

  6. android音乐播放器实现,Android实现简单音乐播放器(MediaPlayer)

    Android实现简单音乐播放器(MediaPlayer),供大家参考,具体内容如下 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个 ...

  7. HTML5中新增的音频标签是,HTML5新增的音频标签、视频标签

    我们所说的H5就是我们所说的HTML5中新增的语言标准 一.音频标签 在HTML5当中有一个叫做audio的标签,可以直接引入一段音频资源放到我们的网页当中 格式: 降级的文字说明(当音频文件不能本浏 ...

  8. html5中的css特性,浅谈HTML5 CSS3的新交互特性

    本文标题的这副图片,是用phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的 ...

  9. HTML5中拖动功能的添加属性,html5中可拖动dragable属性及其他成员的讲解

    html5中可拖动dragable属性及其他成员的讲解 发布时间:2020-04-22 11:08:02 来源:亿速云 阅读:350 作者:小新 这篇文章主要为大家详细介绍了html5中可拖动drag ...

最新文章

  1. RS232接口是如何工作的?
  2. Linux下脚本实战之系统监控
  3. 贝壳集团IPO背后,风投协议之外还要面临何时盈利的问题
  4. 怎么查看ftp服务器的版本信息,查看ftp服务器版本
  5. CSS------如何让大小不一样的div中心对齐
  6. 6174问题 --ACM解决方法
  7. c语言中int的取值范围_c语言入门(1)
  8. PTA 01-复杂度2 Maximum Subsequence Sum (25分)
  9. 计算机路表配置命令,计算机、华为交换机、路由器配置命令表
  10. 欢迎使用CSDN-markdown编辑器-入门
  11. group by很多字段是不是会很慢_3分钟短文 | MySQL在分组时,把多列合并为一个字段!
  12. 使用jquery为table动态添加行的实现代码
  13. Python手撕周杰伦158首歌之后,结果很尴尬,TF-IDF有缺陷,以为AI是王者
  14. C2Prog串口烧写TMS320F28335 Flash实验
  15. Arduino (一)——面包板与固定导线长度
  16. 高考水平科测试软件,新高考选课测评app-新高考最好用的软件推荐!
  17. MACE源码解析【ARM卷积篇(一) 】1*N和N*1卷积实现
  18. 东方信息苑c语言,上海市东方社区信息苑一览表.PDF
  19. 网络模拟和分析工具--Mahimahi的安装教程
  20. 美团 YOLOv6 ORT/MNN/TNN/NCNN C++推理部署

热门文章

  1. php word 邮件合并发送邮件,WPS 邮件合并 30秒批量制作Word文档 Excel数据批量导入World指定位置...
  2. [附源码]JSP+ssm计算机毕业设计温岭市海鲜的捕捞与鉴赏系统3wp88【源码、数据库、LW、部署】
  3. Flutter ListView使用
  4. 春节假期的一些收获总结
  5. python之面向对象(详细)
  6. 计算机组成原理与汇编语言(三)
  7. 别再用录音笔了!iPhone手机打开这个设置,就能变成会议记录神器
  8. 领域应用 | 中医临床术语系统V2.0在线发布啦!
  9. html大学生网站开发实践:企业网站设计——电子产品企业(8页) HTML+CSS+JavaScript
  10. qBittorrent下载速度慢的原因以及解决办法(Tracker地址大全)!