zoukankan      html  css  js  c++  java
  • js模仿微信语音播放的小功能

    自己写的一个模仿微信语音播放的小功能,实现的主要功能是:点击播放,点击暂停,播放切换,,,  代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <style>
        li {
          list-style: none;
           100px;
          height: 30px;
          border: 1px solid #ccc;
          margin-bottom: 10px;
        }
        .voice_play {
          display: none;
        }
      </style>
      <script src="http://code.jquery.com/jquery-latest.js"></script>
    </head>
    <body>
      <ul>
        <li id="1" data-time="5">
          <audio preload="auto" hidden="true"><source src="./明智之举.mp3" type="audio/mpeg"></audio>
          <img src="./i_voice_other.png" alt="" class="voice_stop">
          <img src="./i_voice_other.gif" alt="" class="voice_play">
        </li>
        <li id="2" data-time="10">
          <audio preload="auto" hidden="true"><source src="./tik_tok.mp3" type="audio/mpeg"></audio>
          <img src="./i_voice_other.png" alt="" class="voice_stop">
          <img src="./i_voice_other.gif" alt="" class="voice_play">
        </li>
        <li id="3" data-time="14">
          <audio preload="auto" hidden="true"><source src="./You&I.mp3" type="audio/mpeg"></audio>
          <img src="./i_voice_other.png" alt="" class="voice_stop">
          <img src="./i_voice_other.gif" alt="" class="voice_play">
        </li>
      </ul>
    </body>
    <script>
      // 展示语音播放和暂停是通过两张图片切换,一张静态图,一张GIF动图,这里就不传图片,下载的时候自己放入图片即可
      // 语音的时长这里是模拟的,一般是后台会返回,根据实际时长取
    $('li').click(function () { var val = $(this).attr('val') // 每次点击前清除定时器 clearTimeout(timeId) var audio = $(this).children("audio")[0] // 语音的时长 var time = $(this).data('time') // console.log(time) // 判断当前点击的是否已经在播放, value的值是自己设置的用来区分播放状态和暂停状态的,1是未播放状态,2是已经在播放状态 if (val && val == 2) { // console.log('if') $(this).children('.voice_play').hide() $(this).children('.voice_stop').show() audio.pause() // 暂停 // 重新设置为空,方便下一次点击 $(this).attr('val', 1) } else { // console.log('else') // 找到除点击之外的其他语音,判断这次点击之前是否已经有歌曲在播放,如果是从其他的语音跳转过来, // 要把以前播放的状态改变,,总体思路:页面上只能有一个语音在播放,只有一个val为2 $('li').attr('val', 1) $(this).attr('val', 2)
    var audiolist = $('li').children("audio") // 暂停其他播放 for (let i = 0; i < audiolist.length; i++) { // console.log(audiolist[i]) audiolist[i].pause() } $('li').children('.voice_play').hide() $('li').children('.voice_stop').show() $(this).children('.voice_play').show() $(this).children('.voice_stop').hide() audio.load() //加载 audio.play() //播放 } // console.log($('li').children("audio")) // 语音播放完切换动画 var timeId = setTimeout(() => { // console.log('set',time) $(this).children('.voice_play').hide() $(this).children('.voice_stop').show() $(this).attr('val', 1) }, time * 1000) }) </script> </html>
  • 相关阅读:
    Session问题-一个部门A登录后未注销另一个部门B再登录,以B的身份操作A的成员
    Windows Server2008安装mysql5.6出现程序无法正常启动(0xc000007b)
    百度定位SDK
    Dubbo项目一段时间后提供者消失
    百度安卓SDK秘钥Key错误
    XGBoost类库使用小结
    支持向量机原理(五)线性支持回归
    主成分分析(PCA)原理总结
    scikit-learn 和pandas 基于windows单机机器学习环境的搭建
    梯度提升树(GBDT)原理小结
  • 原文地址:https://www.cnblogs.com/steamed-twisted-roll/p/9443671.html
Copyright © 2011-2022 走看看