Дорогой читатель,

Как насчет создания музыкального плеера с нуля? Замечательно! Давайте начнем.

Структура папок проекта

  1. index.html - содержит макет HTML, который определяет структуру элементов, которые будут отображаться на странице.
  2. Папка изображений - содержит изображения .jpg, используемые в нашем проекте.
  3. Музыкальная папка - содержит аудиофайлы .mp3, используемые в нашем проекте.
  4. style.css - содержит код CSS для стилизации. Используя CSS, мы можем стилизовать различные части, чтобы сделать их более привлекательными
  5. script.js - содержит код Javascript. Есть несколько функций, которые работают вместе, чтобы обрабатывать все функции плеера. Пример: воспроизведение, пауза, переключение песен вперед и назад, всплывающее название песни с индикатором выполнения, когда мы проигрываем песню, возможность щелкнуть индикатор выполнения, чтобы перейти к этому месту в песне и т. Д.

HTML макет

Откройте VSCode и создайте базовую структуру HTML в файле index.html с помощью! а затем нажав вкладку. Задайте название как «Музыкальный проигрыватель». Свяжите style.css и script.js с созданным HTML-файлом и свяжите FontAwesome css, чтобы использовать значки воспроизведения, паузы, следующего и предыдущего.

Внутри тела создайте класс аудиоконтейнера, который будет обертывать все вокруг.

<div class =“audio-container" id =“audio-container">

Внутри класса audio-container создайте класс audio-info, который содержит название песни и прогресс, когда мы нажимаем кнопку воспроизведения.

<div class=”audio-info”>

Добавьте тег h4 с id = 'title' внутри класса audio-info, и он будет динамически заполняться с помощью javascript с текущей воспроизводимой песней. .

<h4 id=”title”></h4>

Создайте класс progress-container и внутри него добавьте класс progress, который будет заполняться динамически.

<div class=”audio-container” id=”audio-container”>

<div class=”audio-info”>

<h4 id=”title”></h4>

<div class=”progress-container” id=”progress-container”>

<div class=”progress” id=”progress”></div>

</div>

</div>

Под классом audio-info добавьте тег audio с источником песни и идентификатором.

<audio src=”music/melody.mp3" id=”audio”></audio>

Для хранения изображений

<img src=”images/melody.jpg” alt=”music-cover” id=”cover”>

Создайте класс навигации, и у нас будет три кнопки внутри него для воспроизведения песни, воспроизведения предыдущей песни и следующей песни.

<div class=”navigation”>

<button id=”prev” class=”action-btn”>

<i class=”fas fa-backward”></i>

</button>

<button id=”play” class=”action-btn action-btn-big”>

<i class=”fas fa-play”></i>

<button id=”next” class=”action-btn”>

<i class=”fas fa-forward”></i>

</button>

CSS стили

Требуется довольно много кода CSS, и я объяснил здесь только важные части, а остальная часть кода CSS в основном связана с позиционированием, размером и цветом элементов. Я поделился ссылкой на github в конце сообщения, где вы можете видеть полный код.

Для оформления тела я использовал линейный градиент оттенков желтого и оранжевого цветов в качестве фонового изображения.

background-image: linear-gradient(0deg, rgba(251,252,13,1) 23.8%, rgba(255,170,1,0.99) 92%);

Добавлен background-color как черный, а также добавлена ​​тень для класса audio-container, который обтекает все, кроме тега h1.

background-color: #000;

box-shadow: 0 20px 20px 0 rgb(247, 148, 1);

Чтобы сделать изображение круглым, установите border-radius на 50% в img-container.

border-radius: 50%;

Установите анимацию в img-container, чтобы круглое изображение вращалось во время воспроизведения песни.

animation: rotate 3s linear infinite;

Создание ключевых кадров поворота от 0 до 360 градусов

@keyframes rotate {

from {

transform: rotate(0deg);}

to {

transform: rotate(360deg);}

}

Если в аудио-контейнере есть класс воспроизведения, изображение будет повернуто.

.audio-container.play .img-container img {

animation-play-state: running;

}

Только во время воспроизведения музыки появится информация об аудио. Обратитесь к следующей реализации CSS

Ниже приведен код CSS для индикатора выполнения, показывающий процент завершения песни. Я использовал белый цвет в качестве фона и черный цвет, чтобы показать прогресс.

Логика Javascript

Логика плеера определяется в файле script.js. Есть несколько функций, которые работают вместе для обработки всех функций проигрывателя.
Определение всех переменных и доступ к элементам HTML.
Сначала выбираются необходимые элементы в макете HTML, которые должны быть динамически изменены. используя метод getElementById (), а затем присваивать им имена переменных, чтобы к ним можно было получить доступ и изменить.

Напишите функцию loadSong (song) для динамического обновления источника звука и соответствующего источника изображения. Вызовите функцию для загрузки сведений о песне в DOM, передав значение songIndex. Я принял значение songIndex равным 1, что означает, что музыкальный проигрыватель запускается со второй песни в списке (индекс начинается с 0).

Давайте создадим прослушиватели событий, которые будут прослушивать определенное событие (например, щелчок) и выполнять определенные действия.

Слушатель событий при нажатии кнопки воспроизведения: нажатие кнопки воспроизведения должно запустить песню, и если песня уже воспроизводится, она должна остановиться. Реализуйте функции playSong () и pauseSong (), которые также включают логику для изменения значков с значка воспроизведения на значок паузы и наоборот.

Прослушиватель событий при нажатии кнопок «Назад» и «Далее»: нажатие на кнопку «Предыдущая» вызовет функцию prevSong (), которая должна воспроизвести предыдущую песню в списке, поэтому мы уменьшаем songIndex. Если значение songIndex меньше 0, мы устанавливаем значение songIndex так, чтобы оно указывало на последнюю песню в списке, чтобы песни воспроизводились в цикле. Точно так же нажатие на кнопку «Далее» вызовет функцию nextSong (), которая должна воспроизвести следующую песню в списке, поэтому мы увеличиваем значение songIndex. Если значение songIndex больше или равно количеству песен в списке, мы устанавливаем значение songIndex равным 0.

Приемник событий для обновления хода песни: в аудиотеге HTML есть событие под названием timeupdate. Каждый раз, когда песня играет постоянно, это будет вызываться, и в этом событии мы вызовем функцию updateProgress (). В функции updateProgress () мы получим продолжительность песни из события и currentTime. Вычислите progressPercent, используя формулу (currentTime / duration) * 100, и установите для этого progressPercent значение width прогресса. бар.

Прослушиватель событий при нажатии на полосу выполнения: чтобы перейти к этому месту в песне, когда мы щелкаем в любом месте на прогресс-контейнере, мы вызываем setProgress () функция. Эта функция изменит ход песни в зависимости от нажатия пользователем на полосе выполнения, получая значение смещения оси X, чтобы узнать, где пользователь щелкнул, и вычислить currentTime с помощью формулы (clickX / width) * продолжительность. Таким образом, мы можем перемещаться в любом месте песни.

Прослушиватель событий для проверки окончания песни: API аудио HTML выдает нам событие под названием завершено. Когда песня закончится, мы вызовем созданную ранее функцию nextSong ().

audio.addEventListener(‘ended’, nextSong);

ВОЙЛА !!!!! Музыкальный плеер готов к демонстрации

Полный исходный код можно найти в репозитории Git Hub, ссылка находится здесь

Спасибо за ваш интерес.