Стилизация плеера HTML5
Здравствуйте. Есть плеер на HTML5
<audio controls> <source src="dialog1.mp3" /> </audio> Как стилизовать плеер так, чтобы вместо панели управления (полосы прокрутки, громкости, play и pause) были только кнопка play и pause в виде картинок? |
На одной странице будет несколько плееров и если возможно нужно чтобы при проигрывании одного аудио, второе автоматически останавливалось
|
С проигрыванием по очереди разобрался. Нужно стилизацию сделать
|
<audio src="https://nvdx.ru/vega.mp3" /></audio>
<div class="labelAud">
<img alt="play" class="play">
<img alt="pause" class="pause">
</div>
<audio src="https://nvdx.ru/vega.mp3" /></audio>
<div class="labelAud">
<img alt="play" class="play">
<img alt="pause" class="pause">
</div>
<script>
var aud = document.querySelectorAll('audio'),
labelAud = document.querySelectorAll('.labelAud');
labelAud.forEach((el,i) => el.onclick = e => {
if (e.target.matches('.play')) aud[i].play();
else if (e.target.matches('.pause')) aud[i].pause();
});
</script>
|
почему-то данный код по два раза отобразил обе кнопки. И еще я видимо не так уточнил. Я имел ввиду, чтобы была видна кнопка Play, если ее нажали, то вместо нее видно кнопка Pause и наоборот. Чтобы только одна кнопка была все время на странице
|
Цитата:
|
я понял, как как сделать так, чтобы не сразу обе кнопки play и pause были, а только одна из них и чтобы менялись они?
|
<style>
.pause {
display: none;
}
</style>
<audio src="https://nvdx.ru/vega.mp3" /></audio>
<div class="labelAud">
<img alt="play" class="play">
<img alt="pause" class="pause">
</div>
<audio src="https://nvdx.ru/vega.mp3" /></audio>
<div class="labelAud">
<img alt="play" class="play">
<img alt="pause" class="pause">
</div>
<script>
var aud = document.querySelectorAll('audio'),
labelAud = document.querySelectorAll('.labelAud');
labelAud.forEach((el, i) => {
el.onclick = e => {
if (e.target.matches('.play')) {
aud[i].play();
e.target.style.display = 'none';
e.currentTarget.querySelector('.pause').style.display = 'inline';
}
else if (e.target.matches('.pause')) {
aud[i].pause();
e.target.style.display = 'none';
e.currentTarget.querySelector('.play').style.display = 'inline';
}
}
aud[i].onended = e => {
el.querySelector('.play').style.display = 'inline';
el.querySelector('.pause').style.display = 'none';
};
});
</script>
|
спасибо..
|
А можно такую штуку подсказать я просто в js не очень разбираюсь.
Вот есть теперь два плеера и два скрипта, один ваш, который меняет стиль, а другой который останавливает проигрывание одного плеера, если запустили второй. Есть такая проблема: Если запустить первый плеер, то у него меняется иконка на Pause, и если в это время запустить второй плеер, то первый плеер останавливается, но иконка Pause остается у него. Я бы хотел чтобы было так: Есть два плеера запустили один у него иконка с Play поменялась на Pause, в этом время запустили второй плеер, и тут у первого плеера иконка опять стала Play, а у второго иконка стала Pause.
<audio onplay="other_pause(0)" src="dialog1.mp3" /></audio>
<div class="labelAud">
<img src="play.png" width="60px" alt="play" class="play">
<img src="pause.png" width="60px" alt="pause" class="pause">
</div>
<audio onplay="other_pause(1)" src="dialog2.mp3" /></audio>
<div class="labelAud">
<img src="play.png" width="60px" alt="play" class="play">
<img src="pause.png" width="60px" alt="pause" class="pause">
</div>
<script>
var aud = document.querySelectorAll('audio'),
labelAud = document.querySelectorAll('.labelAud');
labelAud.forEach((el, i) => {
el.onclick = e => {
if (e.target.matches('.play')) {
aud[i].play();
e.target.style.display = 'none';
e.currentTarget.querySelector('.pause').style.display = 'inline';
}
else if (e.target.matches('.pause')) {
aud[i].pause();
e.target.style.display = 'none';
e.currentTarget.querySelector('.play').style.display = 'inline';
}
}
aud[i].onended = e => {
el.querySelector('.play').style.display = 'inline';
el.querySelector('.pause').style.display = 'none';
};
});
</script>
<script>
var a=document.getElementsByTagName("audio");
function other_pause(b){
for(i=0;i<a.length;i++){
if(!(i==b)){
a[i].pause();
};
}
}
</script>
|
| Часовой пояс GMT +3, время: 20:48. |