Dantes (обсуждение | вклад) Нет описания правки |
Dantes (обсуждение | вклад) Нет описания правки |
||
| Строка 11: | Строка 11: | ||
var wrapper = document.createElement('div'); | var wrapper = document.createElement('div'); | ||
wrapper.className = 'custom-audio-wrapper'; | wrapper.className = 'custom-audio-wrapper'; | ||
var cover = document.createElement('img'); | |||
cover.className = 'custom-audio-cover'; | |||
cover.src = 'https://via.placeholder.com/150'; // Замените на ссылку на обложку | |||
var playBtn = document.createElement('button'); | var playBtn = document.createElement('button'); | ||
| Строка 27: | Строка 31: | ||
time.innerHTML = '0:00'; | time.innerHTML = '0:00'; | ||
var volumeControl = document.createElement('input'); | |||
volumeControl.setAttribute('type', 'range'); | |||
volumeControl.setAttribute('min', 0); | |||
volumeControl.setAttribute('max', 1); | |||
volumeControl.setAttribute('step', 0.01); | |||
volumeControl.setAttribute('value', 1); | |||
volumeControl.className = 'custom-audio-volume'; | |||
var loopBtn = document.createElement('button'); | |||
loopBtn.className = 'custom-audio-loop'; | |||
loopBtn.innerHTML = '🔁'; | |||
var nextBtn = document.createElement('button'); | |||
nextBtn.className = 'custom-audio-next'; | |||
nextBtn.innerHTML = '▶▶'; | |||
var prevBtn = document.createElement('button'); | |||
prevBtn.className = 'custom-audio-prev'; | |||
prevBtn.innerHTML = '◀◀'; | |||
wrapper.appendChild(cover); | |||
wrapper.appendChild(playBtn); | wrapper.appendChild(playBtn); | ||
wrapper.appendChild(progress); | wrapper.appendChild(progress); | ||
wrapper.appendChild(time); | wrapper.appendChild(time); | ||
wrapper.appendChild(volumeControl); | |||
wrapper.appendChild(loopBtn); | |||
wrapper.appendChild(prevBtn); | |||
wrapper.appendChild(nextBtn); | |||
container.appendChild(wrapper); | container.appendChild(wrapper); | ||
| Строка 42: | Строка 71: | ||
}; | }; | ||
// | volumeControl.oninput = function () { | ||
audio.volume = volumeControl.value; | |||
}; | |||
loopBtn.onclick = function () { | |||
audio.loop = !audio.loop; | |||
loopBtn.style.color = audio.loop ? 'green' : 'white'; | |||
}; | |||
nextBtn.onclick = function () { | |||
// Логика для перехода к следующему треку | |||
}; | |||
prevBtn.onclick = function () { | |||
// Логика для перехода к предыдущему треку | |||
}; | |||
audio.addEventListener('loadedmetadata', function () { | audio.addEventListener('loadedmetadata', function () { | ||
progress.max = audio.duration; | progress.max = audio.duration; | ||
| Строка 49: | Строка 94: | ||
audio.addEventListener('timeupdate', function () { | audio.addEventListener('timeupdate', function () { | ||
progress.value = audio.currentTime; | progress.value = audio.currentTime; | ||
time.innerHTML = formatTime(audio.currentTime); | time.innerHTML = formatTime(audio.currentTime); | ||
}); | }); | ||
Версия от 20:20, 16 апреля 2025
$(function () {
var players = document.getElementsByClassName('audio-player');
for (var i = 0; i < players.length; i++) {
(function (container) {
var src = container.getAttribute('data-src');
if (!src) return;
var audio = document.createElement('audio');
audio.src = src;
var wrapper = document.createElement('div');
wrapper.className = 'custom-audio-wrapper';
var cover = document.createElement('img');
cover.className = 'custom-audio-cover';
cover.src = 'https://via.placeholder.com/150'; // Замените на ссылку на обложку
var playBtn = document.createElement('button');
playBtn.className = 'custom-audio-play';
playBtn.innerHTML = '▶';
var progress = document.createElement('input');
progress.setAttribute('type', 'range');
progress.className = 'custom-audio-progress';
progress.setAttribute('min', 0);
progress.value = 0;
progress.step = 0.01;
var time = document.createElement('span');
time.className = 'custom-audio-time';
time.innerHTML = '0:00';
var volumeControl = document.createElement('input');
volumeControl.setAttribute('type', 'range');
volumeControl.setAttribute('min', 0);
volumeControl.setAttribute('max', 1);
volumeControl.setAttribute('step', 0.01);
volumeControl.setAttribute('value', 1);
volumeControl.className = 'custom-audio-volume';
var loopBtn = document.createElement('button');
loopBtn.className = 'custom-audio-loop';
loopBtn.innerHTML = '🔁';
var nextBtn = document.createElement('button');
nextBtn.className = 'custom-audio-next';
nextBtn.innerHTML = '▶▶';
var prevBtn = document.createElement('button');
prevBtn.className = 'custom-audio-prev';
prevBtn.innerHTML = '◀◀';
wrapper.appendChild(cover);
wrapper.appendChild(playBtn);
wrapper.appendChild(progress);
wrapper.appendChild(time);
wrapper.appendChild(volumeControl);
wrapper.appendChild(loopBtn);
wrapper.appendChild(prevBtn);
wrapper.appendChild(nextBtn);
container.appendChild(wrapper);
playBtn.onclick = function () {
if (audio.paused) {
audio.play();
playBtn.innerHTML = '⏸';
} else {
audio.pause();
playBtn.innerHTML = '▶';
}
};
volumeControl.oninput = function () {
audio.volume = volumeControl.value;
};
loopBtn.onclick = function () {
audio.loop = !audio.loop;
loopBtn.style.color = audio.loop ? 'green' : 'white';
};
nextBtn.onclick = function () {
// Логика для перехода к следующему треку
};
prevBtn.onclick = function () {
// Логика для перехода к предыдущему треку
};
audio.addEventListener('loadedmetadata', function () {
progress.max = audio.duration;
});
audio.addEventListener('timeupdate', function () {
progress.value = audio.currentTime;
time.innerHTML = formatTime(audio.currentTime);
});
progress.addEventListener('input', function () {
audio.currentTime = parseFloat(progress.value);
});
function formatTime(seconds) {
var mins = Math.floor(seconds / 60);
var secs = Math.floor(seconds % 60);
if (secs < 10) secs = '0' + secs;
return mins + ':' + secs;
}
})(players[i]);
}
});