htmlcssjs
<audio style="height: 0; width: 0; " id="music" src="music/惊雷.mp3"></audio> <div class="progress"> <span class="start"></span> <div class="progress-bar"> <div class="now"></div> </div> <span class="end"></span> </div>
.progress{ display: flex; justify-content: space-between; align-items: center; width: 5.80rem; margin: 0.5rem auto; } .progress-bar{ position: relative; width: 70%; height: 0.1rem; background-color: #eee; vertical-align: 2px; border-radius: 20px; cursor: pointer; } .now{ position: absolute; left: 0; display: inline-block; height: 0.1rem; width: 0%; background: #31c27c; } .now::after{ content: ''; position: absolute; left: 100%; width: 0.05rem; height: 0.1rem; background-color: lightskyblue; }
const audio = document.getElementById('music');
const progressBar = document.querySelector('.progress-bar');
const now = document.querySelector('.now');
function conversion (value) {
let minute = Math.floor(value / 60);
minute = minute.toString().length === 1 ? ('0' + minute) : minute;
let second = Math.round(value % 60);
second = second.toString().length === 1 ? ('0' + second) : second;
return `${minute}:${second}`;
}
audio.onloadedmetadata = function () {
var end = conversion(audio.duration);
$('.end').html(end);
var start = conversion(audio.currentTime);
$('.start').html(start);
}
progressBar.addEventListener('click', function (event) {
let coordStart = this.getBoundingClientRect().left;
let coordEnd = event.pageX;
let p = (coordEnd - coordStart) / this.offsetWidth
$('.now').css({
'width': p.toFixed(3) * 100 + "%"
})
audio.currentTime = p * audio.duration;
audio.play();
})
setInterval(() => {
var start = conversion(audio.currentTime);
$('.start').html(start);
$('.now').css({
'width': audio.currentTime / audio.duration.toFixed(3) * 100 -1 + '%'
});
}, 1000)
Comments | NOTHING