js实现音频控制进度条功能


Posted in Javascript onApril 01, 2017

效果图:

js实现音频控制进度条功能

代码如下:

<!doctype html>
<html>
<head>
<meta name="author" content="dony">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta name="renderer" content="webkit">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>音频控制进度条</title>
<style type="text/css">

body,div{padding: 0;margin: 0;}
.m-main{width:560px; height: 100%; margin: 3% auto; background-color:#30a5ff;}
.m-main video{display: none; }
.m-main .player {
  width: 100%;
  height: 150px;
  position: relative;
  bottom: 0px;
}
.m-main .player>a{display: inline-block; width: 20%; margin: 0 auto; padding: 5%; color: #FFF; text-align: center;}
.m-main .play-box {
  width: 100%;
  margin: 0 auto;
}

.m-main .play-box .left {
  width: 100%;
  float: left;
}

.m-main .play-box .left p.timeline { width: 70%;height: 10px; background-color: rgba(216, 216, 216, 0.5); border-radius: 5px; margin:30px auto 0; position: relative; z-index: 2; }
.m-main .play-box .left p.timeline span {position: relative; width: 0px; height: 10px; background-color: #FFF; border-radius: 5px; display: block; -webkit-transition: width ease-out 0.3s;-o-transition: width ease-out 0.3s;transition: width ease-out 0.3s;}
.m-main .play-box .left p.timeline span:after{content: ""; position: absolute; top: -4px; right:-0.6rem;width: 1.2rem; height:1.2rem; border-radius: 50%;background-color: #FFF;}
.m-main .play-box .left div.info { height: 26px; line-height: 26px; font-size: 14px; color: #000; position: relative; top: -18px; margin:0 10px; z-index: 1;color: #FFF;}
.m-main .play-box .left div.info .size { float: left; display: block;}
.m-main .play-box .left div.info .timeshow { float: right; display: block;}
</style>
</head>
<body>
<div class="m-main">
  <div class="player">
   <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" id="js-play">播放</a>
   <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" id="js-pause">暂停</a>
    <div class="play-box">
      <div class="left">
        <p class="timeline"><span style=""></span></p>
        <div class="info">
          <span class="size">00:00</span>
          <span class="timeshow">00:00</span>
        </div>
      </div>
    </div>
  </div>
 <div class="video">
 <video controls autoplay name="media" id="js-video"><source src="http://chipsguide.snaillove.com/Public/Uploads/file_server_storage/Audio/2017/03/23/19/192_20003137.mp3" type="video/mp4"></video>
 </div>
</div>
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
  $(function(){
   AudioControl('js-video')
   function AudioControl(id){
     // 音频控制进度条
     var audio = document.getElementById(id);
     $(audio).on('loadedmetadata',function(){
    audio.pause();
    // 进度条控制
     $(document).on('touchend','.timeline',function(e){
       var x = e.originalEvent.changedTouches[0].clientX-this.offsetLeft;
       var X = x < 0 ? 0 : x ;
       var W = $(this).width();
       var place = X > W ? W : X;
       audio.currentTime = (place/W).toFixed(2)*audio.duration
       $(this).children().css({width:(place/W).toFixed(2)*100+"%"})
     });
     // 播放
    $(document).on('click','#js-play',function(){
    audio.play()
    });
    // 暂停
    $(document).on('click','#js-pause',function(){
    audio.pause()
    });
     })
     setInterval(function () {
       var currentTime = audio.currentTime;
       setTimeShow(currentTime);
     }, 1000);
     // 设置播放时间
   function setTimeShow(t) {
     t = Math.floor(t);
     var playTime = secondToMin(audio.currentTime);
     $(".size").html(playTime);
     $('.timeshow').text(secondToMin(audio.duration))
     $('.timeline').children().css({width:(t/audio.duration).toFixed(4)*100+"%"})
   }
     // 计算时间
   function secondToMin(s) {
     var MM = Math.floor(s / 60);
     var SS = s % 60;
     if (MM < 10)
       MM = "0" + MM;
     if (SS < 10)
       SS = "0" + SS;
     var min = MM + ":" + SS;
     return min.split('.')[0];
   }
   }
  })
</script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JS 自定义函数缺省值的设置方法
May 05 Javascript
jquery插件制作 自增长输入框实现代码
Aug 17 jQuery
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
Dec 25 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
Jul 18 Javascript
快速将Vue项目升级到webpack3的方法步骤
Sep 14 Javascript
vue2.0.js的多级联动选择器实现方法
Feb 09 Javascript
解决vue的变量在settimeout内部效果失效的问题
Aug 30 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
Jun 04 jQuery
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 #Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 #Javascript
原生JS实现九宫格抽奖效果
Apr 01 #Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 #Javascript
ES6 Promise对象概念与用法分析
Apr 01 #Javascript
JavaScript中闭包的详解
Apr 01 #Javascript
基于JavaScript实现验证码功能
Apr 01 #Javascript
You might like
用php或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
cakephp常见知识点汇总
2017/02/24 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
newxtree.js代码
2007/03/13 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
2010/06/25 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
面向切面编程(AOP)的理解
2015/05/01 Javascript
浅谈javascript的分号的使用
2015/05/12 Javascript
jQuery获取元素父节点的方法
2016/06/21 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
jQuery实现简单的手风琴效果
2020/04/17 jQuery
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
vue中父子组件注意事项,传值及slot应用技巧
2018/05/09 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
Python跳出循环语句continue与break的区别
2014/08/25 Python
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python实战教程之自动扫雷
2018/07/13 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python这样操作能存储100多万行的xlsx文件
2019/04/16 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
通过实例解析Python调用json模块
2019/12/11 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
2020/04/14 Python
Python爬虫实现百度翻译功能过程详解
2020/05/29 Python
先进个人获奖感言
2014/01/24 职场文书
大课间活动实施方案
2014/03/06 职场文书
工作评语大全
2014/04/26 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
OpenCV实现常见的四种图像几何变换
2022/04/01 Python