当前位置:   article > 正文

H5 Audio 实现自定义播放、暂停、进度条、百分比功能_h5 audio 设置播放进度

h5 audio 设置播放进度

有人问我说在H5里边用Audio怎么实现一个自定义的进度条,想把进度条做的好看点,今天分享一下代码。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style>
  7. #progressBar{width:600px;height:30px;background:#e9e9e9;margin-top:10px;position: relative;}
  8. #playProgressBar{position: absolute;top:0;left:0;background:#20bfd8;height:30px;width:0px;}
  9. #ptxt{width:100%;height:30px;text-align:center;font-size:16px;line-height: 30px;z-index: 10;position: absolute;}
  10. </style>
  11. </head>
  12. <body>
  13. <button onclick="play()">播放</button>
  14. <button onclick="pause()">暂停</button>
  15. <button onclick="next()">下一曲</button>
  16. <button onclick="prev()">上一曲</button>
  17. <div id="progressBar">
  18. <div id="ptxt">0%</div>
  19. <div id="playProgressBar"></div>
  20. </div>
  21. <audio id="AudioDom"></audio>
  22. <script>
  23. var arrys = ["mp3/1.mp3","mp3/2.mp3"];
  24. //获取Audio对象
  25. var AudioDom = document.getElementById("AudioDom");
  26. //设置播放源
  27. var currMp3 = arrys[0];
  28. AudioDom.src = arrys[0];
  29. //监听 Audio 的 timeupdate方法来实时获取播放进度
  30. AudioDom.addEventListener("timeupdate",function(){
  31. //获取当前播放的百分比 当前进度/总进度
  32. var percent = AudioDom.currentTime / AudioDom.duration
  33. //计算进度条的因子,百分比需要*该因子,最后才能到100%
  34. var sp = 600 / 100 ;
  35. //拼接进度条的width
  36. var swidth = (percent * 100 * sp) + "px";
  37. console.log(percent*100,swidth)
  38. //设置进度条的播放进度
  39. document.getElementById("playProgressBar").style.width = swidth;
  40. //保留2位小数
  41. document.getElementById("ptxt").innerText = ((percent*100).toFixed(2))+"%"
  42. })
  43. //上一曲
  44. function prev(){
  45. var tmpMp3 = "";
  46. arrys.forEach(function(item,index){
  47. if(item == currMp3){
  48. if(index == 0){
  49. //说明是第一个
  50. tmpMp3 = arrys[arrys.length - 1];
  51. }else{
  52. //下一个
  53. tmpMp3 = arrys[index-1];
  54. }
  55. console.log(tmpMp3)
  56. AudioDom.src = tmpMp3;
  57. setTimeout(function(){
  58. play()
  59. currMp3 = tmpMp3;
  60. },500)
  61. return ;
  62. }
  63. })
  64. }
  65. //下一曲
  66. function next(){
  67. var tmpMp3 = "";
  68. arrys.forEach(function(item,index){
  69. if(item == currMp3){
  70. if((index+1)>arrys.length-1){
  71. //说明是最后一个
  72. tmpMp3 = arrys[0];
  73. }else{
  74. //下一个
  75. tmpMp3 = arrys[index+1];
  76. }
  77. console.log(tmpMp3)
  78. AudioDom.src = tmpMp3;
  79. setTimeout(function(){
  80. play()
  81. currMp3 = tmpMp3;
  82. },500)
  83. return ;
  84. }
  85. })
  86. }
  87. //播放按钮
  88. function play(){
  89. AudioDom.play();
  90. }
  91. //暂停按钮
  92. function pause(){
  93. AudioDom.pause()
  94. }
  95. console.dir(AudioDom)
  96. </script>
  97. </body>
  98. </html>

以上代码替换arrays里边的路径就可以。

有问题可以在评论区留言,技术问题可以私聊我。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/130264
推荐阅读
相关标签
  

闽ICP备14008679号