javascript - 如何使用 slider 更改 HTML5 音频音量或轨道位置?

标签 javascript jquery html jquery-ui html5-audio

<分区>

我知道 .play().stop() 方法。
但是有没有办法将 slider 链接到音量?还是 slider 到轨道位置?这可能吗?
并感谢您的帮助。谢谢!

最佳答案

jQuery UI 让它变得非常简单:

JS jQuery audio player with sliders

$(function() {

  var $aud = $("#audio"),
      $pp  = $('#playpause'),
      $vol = $('#volume'),
      $bar = $("#progressbar"),
      AUDIO= $aud[0];
  
  AUDIO.volume = 0.75;
  AUDIO.addEventListener("timeupdate", progress, false);
  
  function getTime(t) {
    var m=~~(t/60), s=~~(t % 60);
    return (m<10?"0"+m:m)+':'+(s<10?"0"+s:s);
  }
  
  function progress() {
    $bar.slider('value', ~~(100/AUDIO.duration*AUDIO.currentTime));
    $pp.text(getTime(AUDIO.currentTime));
  }

  $vol.slider( {
    value : AUDIO.volume*100,
    slide : function(ev, ui) {
      $vol.css({background:"hsla(180,"+ui.value+"%,50%,1)"});
      AUDIO.volume = ui.value/100; 
    } 
  });
   
  $bar.slider( {
    value : AUDIO.currentTime,
    slide : function(ev, ui) {
      AUDIO.currentTime = AUDIO.duration/100*ui.value;
    }
  });
  
  $pp.click(function() {
    return AUDIO[AUDIO.paused?'play':'pause']();
  });
  
});
#player{
  position:relative;
  margin:50px auto;
  width:300px;
  text-align:center;
  font-family:Helvetica, Arial;
}
#playpause{
  border:1px solid #eee;
  cursor:pointer;
  padding:12px 0;
  color:#888;
  font-size:12px;
  border-radius:3px;
}
#playpause:hover{
  border-color: #ccc;
}
#volume, #progressbar{
  border:none; 
  height:2px;
}
#volume{
  background:hsla(180,75%,50%,1);
}
#progressbar{
  background:#ccc;
}
.ui-slider-handle{
  border-radius:50%;
  top: -5px !important;
  width: 11px !important;
  height: 11px !important;
  margin-left:-5px !important;
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-3.1.0.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>


<div id="player"> 

  <audio id="audio" src="http://upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg" autoplay loop>
    <p>Your browser does not support the audio element </p>
  </audio>  

  <div id="volume"></div><br>
  <div id="progressbar"></div><br> 
  <div id="playpause"></div>

</div>

关于javascript - 如何使用 slider 更改 HTML5 音频音量或轨道位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20753756/

相关文章:

javascript - C# 正则表达式在 Javascript 中不起作用

javascript - 尝试使用javascript来填充按钮类的标签

html - <span> 在 <div> 的右下角没有 "position:absolute"

javascript - 选中复选框时使 div 可见的附加 Javascript 代码

javascript - 在 html 文本后附加 img

javascript - 滚动顶部不等于向上移动 block

javascript - 将快照中的所有 Firestore 时间戳转换为 JS 日期的方法?

javascript - 如何检测 rel ="noreferrer"支持?

javascript - 访问条件 View 的下拉列表的选定状态

php - 如何使用 jquery 刷新 reCaptcha 图像