Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.12.2018, 10:32
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

Стилизация плеера HTML5
Здравствуйте. Есть плеер на HTML5

<audio controls>
  <source src="dialog1.mp3" />
</audio>


Как стилизовать плеер так, чтобы вместо панели управления (полосы прокрутки, громкости, play и pause) были только кнопка play и pause в виде картинок?
Ответить с цитированием
  #2 (permalink)  
Старый 18.12.2018, 10:33
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

На одной странице будет несколько плееров и если возможно нужно чтобы при проигрывании одного аудио, второе автоматически останавливалось
Ответить с цитированием
  #3 (permalink)  
Старый 18.12.2018, 10:44
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

С проигрыванием по очереди разобрался. Нужно стилизацию сделать
Ответить с цитированием
  #4 (permalink)  
Старый 18.12.2018, 11:10
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<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>
Ответить с цитированием
  #5 (permalink)  
Старый 18.12.2018, 11:14
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

почему-то данный код по два раза отобразил обе кнопки. И еще я видимо не так уточнил. Я имел ввиду, чтобы была видна кнопка Play, если ее нажали, то вместо нее видно кнопка Pause и наоборот. Чтобы только одна кнопка была все время на странице
Ответить с цитированием
  #6 (permalink)  
Старый 18.12.2018, 11:22
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от kolhoz
почему-то данный код по два раза отобразил обе кнопки.
тут два аудио, это я для вашего понимания
Ответить с цитированием
  #7 (permalink)  
Старый 18.12.2018, 11:23
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

я понял, как как сделать так, чтобы не сразу обе кнопки play и pause были, а только одна из них и чтобы менялись они?
Ответить с цитированием
  #8 (permalink)  
Старый 18.12.2018, 11:35
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<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>
Ответить с цитированием
  #9 (permalink)  
Старый 18.12.2018, 11:40
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

спасибо..
Ответить с цитированием
  #10 (permalink)  
Старый 18.12.2018, 11:51
Аспирант
Отправить личное сообщение для kolhoz Посмотреть профиль Найти все сообщения от kolhoz
 
Регистрация: 04.03.2015
Сообщений: 92

А можно такую штуку подсказать я просто в 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить iptv в тег “video” из HTML5 ? nexlez (X)HTML/CSS 1 21.03.2017 09:41
Вывод плеера через java script FloRes Общие вопросы Javascript 9 15.02.2015 12:05
HTML5 Geolocation API, вопрос о снятии данных User-Agent (X)HTML/CSS 2 22.02.2013 20:09
vkontakte, html5 и как почему не перезагружается страница olga153b Events/DOM/Window 10 02.11.2011 15:20
Когда тэги типа <font> исчезнут? Alex455 (X)HTML/CSS 10 14.06.2011 20:14