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 去字符串空格终极版(支持utf8)
Nov 14 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
May 10 Javascript
简单谈谈JS数组中的indexOf方法
Oct 13 Javascript
JS 调用微信扫一扫功能
Dec 22 Javascript
BootStrap表单验证实例代码
Jan 13 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
Feb 12 Javascript
微信小程序 下拉列表的实现实例代码
Mar 08 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
详解puppeteer使用代理
Dec 27 Javascript
详解Vue的watch中的immediate与watch是什么意思
Dec 30 Javascript
简单了解Vue computed属性及watch区别
Jul 10 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中绘制图像的一些函数总结
2014/11/19 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
PHP进阶学习之依赖注入与Ioc容器详解
2019/06/19 PHP
PHP多进程简单实例小结
2019/11/09 PHP
网站接入QQ登录的两种方法
2014/07/22 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
javascript表单验证大全
2015/08/12 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
2015/08/21 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
mac上node.js环境的安装测试
2017/07/03 Javascript
vue中导出Excel表格的实现代码
2018/10/18 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
vue实现多条件和模糊搜索功能
2019/05/28 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
2019/10/16 Javascript
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
[01:06:43]完美世界DOTA2联赛PWL S3 PXG vs GXR 第二场 12.19
2020/12/24 DOTA
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
python 2.7.14安装图文教程
2018/04/08 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
2019/07/08 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
区域总监的岗位职责
2013/11/21 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
幼儿教师暑期培训方案
2014/08/27 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL
MySQL窗口函数的具体使用
2021/11/17 MySQL