Подключение

Добавьте в элемент <head> на странице:

<script src="/путь/к/jquery.js"></script>
<script src="jouele/jouele.js"></script>
<link rel="stylesheet" type="text/css" href="jouele/jouele.css" />

Простое использование

Каждая ссылка с классом jouele превратится в плеер МП3-файла, на который она ведёт:

<a href="news.mp3" class="jouele">
  Ilya Birman: News
</a>

Плеер показывает длину только после начала воспроизведения. Если хотите, чтобы она отображалась сразу, укажите её через атрибут data-length:

class="jouele" data-length="9:54"

Плейлисты

Если вы хотите, чтобы после завершения одного трека начинал играть следующий, сделайте из них плейлист:

<div class="jouele-playlist">
  <p><a href="news.mp3" class="jouele">
    Ilya Birman: News
  </a></p>
  <p><a href="news-remix.mp3" class="jouele">
    Ilya Birman: News (Ninth Of Kin Remix)
  </a></p>
</div>

Чтобы плейлист играл по кругу:

class="jouele-playlist" data-repeat="true"

Класс jouele-playlist можно использовать в html или body — тогда подряд будет играть всё на странице.

Управление пробелом

Чтобы клавиша пробел включала и выключала воспроизведение, напишите у любого трека, плейлиста или элемента управления:

class="jouele..." data-space-control="true"

Пробел перестанет скролить страницу и начнёт управлять воспроизведением на ней. Если ничего не играет, заиграет последний игравший (или первый на странице) трек. Если что-то играет, оно встанет на паузу.

Если нужно, чтобы при первом нажатии пробела играл определённый трек:

class="jouele..." data-first="true"

Изменение расцветки

Дизайн плеера рассчитан на использование на светлом фоне. Если используете на тёмном фоне, добавьте класс jouele-skin-dark, и чёрные элементы плеера станут белыми:

<a href="news.mp3" class="jouele jouele-skin-dark">
  Ilya Birman: News
</a>

Класс также можно применить к любому из предков, тогда он подействует на все экземпляры плеера внутри этого предка.

В дистрибутиве содержится файл jouele.skin.css, в котором приведён код класса jouele-skin-dark. Сделайте свою расцветку по аналогии, если нужно, и подключите свой ЦСС после дефолтного.

Элементы управления

С помощью класса jouele-control любой элемент на странице можно сделать элементом управления воспроизведением в плеере. Например, так можно сделать, чтобы обложка включала и выключала трек:

<img
  src="cover.jpg"
  class="jouele-control"
  data-type="play-pause"
/>

Если плееров на странице несколько, то элементы управления управляют тем, который играл последним, либо первым на странице, если ещё ничего не играло.

С помощью атрибута data-href можно привязать элемент управления к конкретному треку:

<img
  src="cover.jpg"
  class="jouele-control"
  data-type="play-pause"
  data-href="news.mp3"
/>

Путь к файлу должен в точности совпадать с тем, который указан в плеере.

Из элементов управления как из запчастей можно собрать свой плеер, например:

Если в элементе управления указан data-href, то отдельного плеера в виде элемента a может вообще не быть, уже одного этого элемента достаточно, чтобы воспроизведение работало.

Чтобы собранный из элементов плеер как-то реагировал на действия пользователя, все элементы управления динамически получают разные ЦСС-классы, которые можно стилизовать. Например, все элементы приобретают класс jouele-is-playing когда музыка играет. Вот как это используется для раскраски плеера выше:

.jouele-sample-player {
  background: #fff;
}
.jouele-sample-player.jouele-is-playing {
  background: #e0e0e0;
}

Доступны следующие элементы управления:

play-pause
По клику включает / выключает воспроизведение.
play
По клику включает воспроизведение, если ещё не.
pause
По клику выключает воспроизведение, если ещё не.
title
Контейнер, в котором будет показано название трека.
time-total
Контейнер, в котором будет показана длительность трека.
time-elapsed
Контейнер, в котором будет показано проигранное время трека.
time-remaining
Контейнер, в котором будет показано оставшееся время трека.
time-toggle
Контейнер, в котором будет показано проигранное время трека. По клику переключается в оставшееся и обратно. Если к одному треку привязано несколько таких элементов, они переключаются одновременно.
timeline
Клики или движение мыши с нажатой кнопкой внутри такого элемента интерпретируются как перемотка в соответствующую позицию трека (по горизонтали). Предполагается, что внутри него будет размещён элемент elapsed, см. далее.
elapsed
Элемент, ширина (свойство width) которого динамически изменяется и соответствует проигранной части трека в процентах. Предполагается, что этот элемент находится внутри элемента timeline и постепенно «закрашивает» его во время воспроизведения.
position
Элемент, положение которого (свойство left) которого динамически изменяется и соответствует проигранной части трека в процентах. Предполагается, что этот элемент находится внутри элемента timeline и постепенно двигается в нём во время воспроизведения. Собственная ширина width этого элемента также учитывается.
seek
Элемент для перемотки трека в определённую позицию и подсветки определённого фрагмента в тексте во время его воспроизведения (ниже есть пример). Если есть атрибут data-to="3:57", по клику переносит на указанное время и начинает воспроизведение (по умолчанию переносит в ноль). Если есть только атрибут data-range="13:57...18:19", по клику переносит на время начала диапазона и начинает воспроизведение. Когда играет кусок трека внутри указанного диапазона, элемент также приобретает класс jouele-is-within, видом которого можно управлять через ЦСС.

Эти элементы приобретают следующие классы в зависимости от статуса воспроизведения связанного с ними трека:

jouele-is-paused
Когда трек не играет, но раньше играл.
jouele-is-playing
Когда трек играет, либо идёт буферизация.
jouele-is-buffering
Когда идёт буферизация (при этом класс jouele-is-playing остаётся).
jouele-is-within
Когда трек находится в позиции внутри диапазона (для контролов seek).
jouele-is-loaded
Когда трек загружен и готов к проигрыванию.
jouele-is-available
Когда трек либо ещё не проигрывался, либо уже проигрывался и точно доступен.
jouele-is-unavailable
Когда трек не удалось воспроизвести.

Пример использования элемента seek

Пусть есть длинный микс из кучи треков. В тексте мы упоминаем один конкретный из них:

<span
  class="jouele-control"
  data-type="seek"
  data-range="13:57…18:19"
>
  Алла Пугачёва: Миллион алых роз
</span>

По клику в этот кусок текста микс автоматически перематывается на позицию 13:57 и начинает играть с неё. Если же микс просто собственным ходом дошёл до отрезка 13:57...18:19, или его пользователь туда перемотал руками, то кусок текста приобретает дополнительно класс jouele-is-within, чтобы его можно было подсвечивать, когда играет именно эта часть. То есть независимо от того, как мы достигли этого диапазона — по клику в текст или иначе — если сейчас играет в нём, то он подсвечивается.

Разработчикам

В Гитхабе — техническая документация по Джаваскриптовому АПИ.


Поделиться
Отправить
Запинить