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 相关文章推荐
Ucren Virtual Desktop V2.0
Nov 07 Javascript
javascript 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
javascript 动态加载 css 方法总结
Jul 11 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
Mar 23 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
Dec 18 Javascript
jQuery实现标签页效果实战(4)
Feb 08 Javascript
微信小程序商品详情页的底部弹出框效果
Nov 16 Javascript
Vue.js的复用组件开发流程完整记录
Nov 29 Javascript
在Vue项目中引入JQuery-ui插件的讲解
Jan 27 jQuery
微信小程序自定义导航栏(模板化)
Nov 15 Javascript
JS+CSS实现炫酷光感效果
Sep 05 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和XSS跨站攻击的防范
2007/04/17 PHP
PHP URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
jQuery判断checkbox(复选框)是否被选中以及全选、反选实现代码
2014/02/21 Javascript
jquery中load方法的用法及注意事项说明
2014/02/22 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
基于ajax与msmq技术的消息推送功能实现代码
2016/12/26 Javascript
js实现自定义路由
2017/02/04 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
JS数组的常用10种方法详解
2020/05/08 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
python mysql中in参数化说明
2020/06/05 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
python中entry用法讲解
2020/12/04 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
美国领先的家庭健康检测试剂盒提供商:LetsGetChecked
2019/03/18 全球购物
车间主管岗位职责
2013/11/14 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
教师考核评语
2014/04/28 职场文书
2014和解协议书范文
2014/09/15 职场文书
迁徙的鸟观后感
2015/06/09 职场文书