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 相关文章推荐
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
Javascript中的关键字和保留字整理
Oct 16 Javascript
jquery实现点击变换导航样式的方法
Aug 31 Javascript
实例详解JSON数据格式及json格式数据域字符串相互转换
Jan 07 Javascript
Zabbix添加Node.js监控的方法
Oct 20 Javascript
浅析vue数据绑定
Jan 17 Javascript
Vue 过滤器filters及基本用法
Dec 26 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
Sep 03 Javascript
JavaScript简易计算器制作
Jan 17 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
Sep 21 Javascript
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
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 文件缓存函数
2011/10/08 PHP
PHP中读取照片exif信息的方法
2014/08/20 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
在小程序中使用腾讯视频插件播放教程视频的方法
2018/07/10 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
spring+angular实现导出excel的实现代码
2019/02/27 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
Python中集合类型(set)学习小结
2015/01/28 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
python中get和post有什么区别
2020/06/19 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
html5 Canvas画图教程(7)—canvas里画曲线之quadraticCurveTo方法
2013/01/09 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
高级人员简历的自我评价分享
2013/11/03 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
2015年科协工作总结
2015/05/19 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Python之基础函数案例详解
2021/08/30 Python
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python