h5 audio 播放进度条

   效果图:

    

  html部分:

    

<div class="audiojindu">
<div class="playcontrol">
<img id="imgcontrol" src="img/paly.png" alt="" />
</div>
<div class="jindu">
<div class="qstime">
00:00
</div>
<div class="endtime">
05:31
</div>
<div class="jindutiao">
<div class="ssjd">
<div class="yuan"></div>
</div>
</div>
</div>
<audio id="audio" src=""></audio>
</div>

 

    css:

 .audiojindu{
position: absolute;
left: 0.1rem;
right: 0.05rem;
bottom: 1.0rem;
height: 0.78rem;
}
.mood{
position: absolute;
top: 8.0rem;
left: 1.0rem;
right: 1.0rem;
line-height: 0.40rem;
font-size: 0.26rem;
color: #FFFFFF;
text-align: center;
height: 2.0rem;
overflow: hidden;
text-overflow:ellipsis;
}
.playcontrol{
position: absolute;
left:;
top:;
width: 0.78rem;
height: 0.78rem;
background: url(../img/controlbj.png) 0 0 no-repeat;
-webkit-background-size: 100% 100%;
background-size: 100% 100%;
border-right: 2px solid #908f8d;
}
#imgcontrol{
position: absolute;
left: 50%;
top: 50%;
width: 0.39rem;
height: 0.39rem;
margin-left: -0.195rem;
margin-top: -0.195rem;
}
.jindu{
position: absolute;
left: 0.8rem;
right:;
top:;
bottom:;
background: url(../img/jinbj.png)0 0 no-repeat;
-webkit-background-size: 100% 100%;
background-size: 100% 100%;
}
.qstime{
position: absolute;
left:;
top:;
width: 0.65rem;
height: 0.78rem;
font-size: 0.2rem;
text-align: center;
color: white;
line-height: 0.78rem;
}
.endtime{
position: absolute;
right:;
top:;
width: 0.65rem;
height: 0.78rem;
font-size: 0.2rem;
text-align: center;
color: white;
line-height: 0.78rem;
}
.jindutiao{
position: absolute;
left: 0.76rem;
right: 0.76rem;
top: 0.38rem;
border-bottom: 2px solid rgba(255,255,255,0.2);
}
.ssjd{
position: absolute;
left:;
top:;
width:0.0rem;
background-color:red;
border-bottom: 2px solid #ff3153;
-webkit-transition: width ease-out 0.3s;
-o-transition: width ease-out 0.3s;
transition: width ease-out 0.3s;
}
@-webkit-keyframes circle{
0%{ transform: rotate(0deg); }
100%{ transform: rotate(360deg); }
}
.yuan{
position: absolute;
left: 100%;
top: -0.1rem;
width: 0.24rem;
margin-left: -0.12rem;
height: 0.24rem;
border-radius: 0.12rem;
background-color: #ff3153;
border: 2px solid rgba(0,0,0,0.7);
box-sizing: border-box;
}

    js:

 var audioPlayer = document.querySelector('#audio');
var jindutiao = document.querySelector(".jindutiao");
var yuan = document.querySelector(".yuan");
var ssjd = document.querySelector(".ssjd"); //歌曲时长格式转化
function timeToStr(time) {
var m = 0,
s = 0,
_m = '00',
_s = '00';
time = Math.floor(time % 3600);
m = Math.floor(time / 60);
s = Math.floor(time % 60);
_s = s < 10 ? '0' + s : s + '';
_m = m < 10 ? '0' + m : m + '';
return _m + ":" + _s;
}
var zongTime = 0; //歌曲可以播放的监听事件
audioPlayer.oncanplay = function() {
$(".endtime").html(timeToStr(audioPlayer.duration))
zongTime = audioPlayer.duration;
}
//进度事件监听
audioPlayer.addEventListener("timeupdate", function() {
$(".qstime").html(timeToStr(this.currentTime))
var baifenbi = this.currentTime / zongTime * 100;
var str = baifenbi.toFixed(2) + "%";
$(".ssjd").width(str);
}); //播放按钮控制
$(".playcontrol").on("click", function() {
if(audioPlayer.paused) {
console.log("让音频播放")
audioPlayer.play()
$(".viewimg").addClass("zhuan");
$(".playcontrol").empty();
$(".playcontrol").append('<img id="imgcontrol" src="img/zanting.png" alt="" />');
} else {
console.log("让音频暂停")
audioPlayer.pause()
$(".viewimg").removeClass("zhuan");
$(".playcontrol").empty();
$(".playcontrol").append('<img id="imgcontrol" src="img/paly.png" alt="" />');
}
}) //歌曲播放完的事件监听
audioPlayer.onended = function() {
audioPlayer.pause()
$(".viewimg").removeClass("zhuan");
$(".playcontrol").empty();
$(".playcontrol").append('<img id="imgcontrol" src="img/paly.png" alt="" />');
$(".qstime").html("00:00");
$(".ssjd").width("0%"); } //拖动进度条
$(".jindutiao").on('touchend',function(e){
var x = e.originalEvent.changedTouches[0].clientX-$(".jindutiao").offset().left;
var X = x < 0 ? 0 : x ;
var W = $(this).width();
var place = X > W ? W : X;
audioPlayer.currentTime = (place/W).toFixed(2)*audioPlayer.duration;
$(".ssjd").css({width:(place/W).toFixed(2)*100+"%"})
})

h5 audio进度条的更多相关文章

  1. jquery自定义进度条与h5原生进度条

      介绍一款自定义的进度条 <div class="box-nine"> <div class="progress"> <!--一 ...

  2. audio进度条

    如上图所示:为效果图 代码如下: <!doctype html><html> <head> <meta name="author" con ...

  3. H5 可堆叠的圆环进度条,支持任意数量子进度条

    by Conmajia SN: S22-W1M 由来 看到一篇帖子<vue实用组件--圆环百分比进度条>,让我想起了很多年前我在WinForm下仿制过的Chrome进度条. ▲ 原版进度条 ...

  4. h5 audio播放问题,audio获取缓存进度条

    <!--全局 audio --> <audio id="audio" @playing="audioReady" @timeupdate=&q ...

  5. 给H5页面添加百分比的进度条,精确度高

    进度条样式地址:http://sandbox.runjs.cn/show/6vxbxjrf SVG圆环样式地址:http://sandbox.runjs.cn/show/3ho1qpe9 原理:由于H ...

  6. 自动适配H5容器(UIViewView/WKWebView),生成长图,防微信进度条

    前段时间撸代码猥琐发育的时候,设计师老王给了张截图某宝APP上一个生成长图分享的功能,正好公司有这个需求,于是在立马开始操练起来!在万能的度娘上搜集整理资料后发现很多文章介绍的方案对WKWebView ...

  7. Android:webView加载h5网页视频,播放不了,以及横屏全屏的问题和实现自定义加载进度条的效果

    1.webView加载h5网页视频,播放不了,android3.0之后要在menifest添加硬件加速的属性 android:hardwareAccelerated="true". ...

  8. h5实现手机端等级进度条

    h5实现等级进度条 需求如下: 实现一个动画进度条,页面一打开实现一个进度条动画,因为App这个页面会经常改,所以没有使用原审Android或者IOS来实现,希望通过H5来做: 服务器端返回如下数据: ...

  9. H5自带进度条&滑块

    一.H5自带进度条 <div id="d1"> <p id="pgv">进度:0%</p> <progress id= ...

随机推荐

  1. NATS—发布/订阅机制

    概念 发布/订阅(Publish/subscribe 或pub/sub)是一种消息范式,消息的发送者(发布者)不是计划发送其消息给特定的接收者(订阅者).而是发布的消息分为不同的类别,而不需要知道什么 ...

  2. mysql、oracle分库分表方案之sharding-jdbc使用(非demo示例)

    选择开源核心组件的一个非常重要的考虑通常是社区活跃性,一旦项目团队无法进行自己后续维护和扩展的情况下更是如此. 至于为什么选择sharding-jdbc而不是Mycat,可以参考知乎讨论帖子https ...

  3. 火车时刻表WebApp

    关键词 :Ajax 跨域访问 php 同源策略 JQueryMobile 前言 在面试的过程中,兄弟连的徐老师提出要求我用JQuery Mobile(前端框架)来实现一个具有“火车时刻表”功能的Web ...

  4. linux 查看和修改文件时间

    参考:https://www.cnblogs.com/chjbbs/p/6437879.html?utm_source=itdadao&utm_medium=referral . 同时修改文件 ...

  5. Codeforces 827E Rusty String - 快速傅里叶变换 - 暴力

    Grigory loves strings. Recently he found a metal strip on a loft. The strip had length n and consist ...

  6. makefile如果没有符合的显式规则将会使用隐式规则

    举例: 当前目录下有个Makefile和jello.c文件,其中有这样的规则jello.o:%.c %.h Makefile (静态模式规则),表明的含义为:要生成的jello.o目标依赖jello. ...

  7. LightOJ 1151 Snakes and Ladders(概率DP + 高斯消元)

    题意:1~100的格子,有n个传送阵,一个把进入i的人瞬间传送到tp[i](可能传送到前面,也可能是后面),已知传送阵终点不会有另一个传送阵,1和100都不会有传送阵.每次走都需要掷一次骰子(1~6且 ...

  8. Gym 101775J Straight Master(差分数组)题解

    题意:给你n个高度,再给你1~n每种高度的数量,已知高度连续的3~5个能消去,问你所给的情况能否全部消去:例:n = 4,给出序列1 2 2 1表示高度1的1个,高度2的2个,高度3的2个,高度4的1 ...

  9. (转)RabbitMQ学习

    (二期)24.消息中间件RabbitMq [课程24]RabbitM...概念.xmind60.2KB [课程24]五种队列模式.xmind0.8MB [课程24]消息确...rm).xmind84. ...

  10. 160CrackMe练手 001

    peid判断无壳,打开输入伪码注册,根据报错od查找字符串 接下来定位到字符串周边代码 0042FA15 |. 8D55 F0 lea edx,[local.4] 0042FA18 |. 8B83 D ...