zoukankan      html  css  js  c++  java
  • h5 audio进度条

    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> 
    View Code

     

        css:

      1 .audiojindu{
      2     position: absolute;
      3     left: 0.1rem;
      4     right: 0.05rem;
      5     bottom: 1.0rem;
      6     height: 0.78rem;
      7 }
      8 .mood{
      9     position: absolute;
     10     top: 8.0rem;
     11     left: 1.0rem;
     12     right: 1.0rem;
     13     line-height: 0.40rem;
     14     font-size: 0.26rem;
     15     color: #FFFFFF;
     16     text-align: center;
     17     height: 2.0rem;
     18     overflow: hidden;
     19     text-overflow:ellipsis;
     20 }
     21 .playcontrol{
     22     position: absolute;
     23     left: 0;
     24     top: 0;
     25     width: 0.78rem;
     26     height: 0.78rem;
     27     background: url(../img/controlbj.png) 0 0 no-repeat;
     28     -webkit-background-size: 100% 100%;
     29     background-size: 100% 100%;
     30     border-right: 2px solid #908f8d;
     31 }
     32 #imgcontrol{
     33     position: absolute;
     34     left: 50%;
     35     top: 50%;
     36     width: 0.39rem;
     37     height: 0.39rem;
     38     margin-left: -0.195rem;
     39     margin-top: -0.195rem;
     40 }
     41 .jindu{
     42     position: absolute;
     43     left: 0.8rem;
     44     right: 0;
     45     top: 0;
     46     bottom: 0;
     47     background: url(../img/jinbj.png)0 0 no-repeat;
     48     -webkit-background-size: 100% 100%;
     49     background-size: 100% 100%;
     50 }
     51 .qstime{
     52     position: absolute;
     53     left: 0;
     54     top: 0;
     55     width: 0.65rem;
     56     height: 0.78rem;
     57     font-size: 0.2rem;
     58     text-align: center;
     59     color: white;
     60     line-height: 0.78rem;
     61 }
     62 .endtime{
     63     position: absolute;
     64     right: 0;
     65     top: 0;
     66     width: 0.65rem;
     67     height: 0.78rem;
     68     font-size: 0.2rem;
     69     text-align: center;
     70     color: white;
     71     line-height: 0.78rem;
     72 }
     73 .jindutiao{
     74     position: absolute;
     75     left: 0.76rem;
     76     right: 0.76rem;
     77     top: 0.38rem;
     78     border-bottom: 2px solid rgba(255,255,255,0.2);
     79 }
     80 .ssjd{
     81     position: absolute;
     82     left: 0;
     83     top: 0;
     84     width:0.0rem;
     85     background-color:red;
     86     border-bottom: 2px solid #ff3153;
     87     -webkit-transition: width ease-out 0.3s;
     88     -o-transition: width ease-out 0.3s;
     89     transition: width ease-out 0.3s;
     90 }
     91  @-webkit-keyframes circle{
     92   0%{ transform: rotate(0deg); }
     93   100%{ transform: rotate(360deg); }
     94  }
     95 .yuan{
     96     position: absolute;
     97     left: 100%;
     98     top: -0.1rem;
     99     width: 0.24rem;
    100     margin-left: -0.12rem;
    101     height: 0.24rem;
    102     border-radius: 0.12rem;
    103     background-color: #ff3153;
    104     border: 2px solid rgba(0,0,0,0.7);
    105     box-sizing: border-box;
    106 }
    View Code

        js:

     1 var audioPlayer = document.querySelector('#audio');
     2 var jindutiao = document.querySelector(".jindutiao");
     3 var yuan = document.querySelector(".yuan");
     4 var ssjd = document.querySelector(".ssjd");
     5 
     6     //歌曲时长格式转化
     7     function timeToStr(time) {
     8         var m = 0,
     9             s = 0,
    10             _m = '00',
    11             _s = '00';
    12         time = Math.floor(time % 3600);
    13         m = Math.floor(time / 60);
    14         s = Math.floor(time % 60);
    15         _s = s < 10 ? '0' + s : s + '';
    16         _m = m < 10 ? '0' + m : m + '';
    17         return _m + ":" + _s;
    18     }
    19     var zongTime = 0;
    20 
    21     //歌曲可以播放的监听事件
    22     audioPlayer.oncanplay = function() {
    23         $(".endtime").html(timeToStr(audioPlayer.duration))
    24         zongTime = audioPlayer.duration;
    25     }
    26     //进度事件监听
    27     audioPlayer.addEventListener("timeupdate", function() {
    28         $(".qstime").html(timeToStr(this.currentTime))
    29         var baifenbi = this.currentTime / zongTime * 100;
    30         var str = baifenbi.toFixed(2) + "%";
    31         $(".ssjd").width(str);
    32     });
    33 
    34     //播放按钮控制
    35     $(".playcontrol").on("click", function() {
    36         if(audioPlayer.paused) {
    37             console.log("让音频播放")
    38             audioPlayer.play()
    39             $(".viewimg").addClass("zhuan");
    40             $(".playcontrol").empty();
    41             $(".playcontrol").append('<img id="imgcontrol" src="img/zanting.png" alt="" />');
    42         } else {
    43             console.log("让音频暂停")
    44             audioPlayer.pause()
    45             $(".viewimg").removeClass("zhuan");
    46             $(".playcontrol").empty();
    47             $(".playcontrol").append('<img id="imgcontrol" src="img/paly.png" alt="" />');
    48         }
    49     })
    50 
    51     //歌曲播放完的事件监听
    52     audioPlayer.onended = function() {
    53         audioPlayer.pause()
    54         $(".viewimg").removeClass("zhuan");
    55         $(".playcontrol").empty();
    56         $(".playcontrol").append('<img id="imgcontrol" src="img/paly.png" alt="" />');
    57         $(".qstime").html("00:00");
    58         $(".ssjd").width("0%");
    59 
    60     }
    61 
    62     //拖动进度条
    63      $(".jindutiao").on('touchend',function(e){
    64         var x = e.originalEvent.changedTouches[0].clientX-$(".jindutiao").offset().left;
    65            var X = x < 0 ? 0 : x ;
    66            var W = $(this).width();
    67            var place = X > W ? W : X;
    68            audioPlayer.currentTime = (place/W).toFixed(2)*audioPlayer.duration;
    69            $(".ssjd").css({(place/W).toFixed(2)*100+"%"})
    70     })
    View Code
  • 相关阅读:
    转载(腾讯云社区)——详解django-apscheduler的使用方法
    pipenv——python包管理工具
    xx系统需求进度02
    xx系统需求进度01
    Hbase简介
    第七周总结
    《软件需求十步走》阅读笔记一
    第六周总结
    HDFS
    金字塔表达方法
  • 原文地址:https://www.cnblogs.com/lijuntao/p/8184117.html
Copyright © 2011-2022 走看看