ЖМК-301/2. Веб-дизайн. Практическое занятие №6. Прото-3D дизайн c аудиоплеером и extra-depth интерфейсом
Вам нужно создать страницу, реализованную по принципам прото-3D дизайна с extra-depth эффектом и работающим аудиоплеером. Для этого вам потребуется:
II HTML
10) Открываем типовые теги страницы:
<html lang="en">
<head>
<meta charset="UTF-8"></meta>
<title>Ваш заголовок</title>
11) Подключаем шрифт и иконки. При необходимости используйте свои:
<link href="https://fonts.googleapis.com/css?family=Roboto&display=swap" rel="stylesheet"></link>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"></link>
12) Подключаем CSS, закрываем </head>, внутри <body> открываем классы плеера и обложки:
<div class="player">
<div class="cover">
13) в теге <img> встраиваем обложку альбома или портрет исполнителя, закрываем </div> обложки.
14) Открываем класс инфоблока, в заголовке указываем название трека, в классе исполнителя - его имя:
<div class="info">
<div class="title">название трека</div>
<div class="singer">исполнитель</div>
15) Закрываем класс инфоблока </div>, добавляем классы кнопок запуска трека, повтора, громкости:
<div class="volume-box">
<span class="volume-down"><i class="material-icons">remove</i></span>
<input class="volume-range" max="100" min="0" oninput="music.volume = this.value/100" step="1" type="range" value="80" />
<span class="volume-up"><i class="material-icons">add</i></span>
</div>
<div class="btn-box">
<i class="material-icons repeat" onclick="handleRepeat()">repeat</i>
<i class="material-icons volume" onclick="handleVolume()">volume_up</i>
</div>
<div class="music-box">
<input class="seekbar" max="100" min="0" oninput="handleSeekBar()" step="1" type="range" value="0" />
16) Получаем ссылку на mp3 трек из репозитория. Чтобы получить корректную ссылку, скопируйте ее по адресу view raw. Ссылка приобретет вид:
https://github.com/Dmitrykonn/имя репозитория/raw/refs/heads/main/имя файла.mp3
Рабочая ссылка должна быть преобразована следующим образом:
https://raw.githubusercontent.com/Dmitrykonn/имя репозитория/refs/heads/main/имя файла.mp3
17) Открываем HTML5-тег для аудио и указываем в нем ссылку на файл:
<audio class="music-element">
<source src="ссылка на аудио" type="audio/mp3"></source>
</audio>
18) Добавляем счетчик трека:
<span class="current-time">0:00</span><span class="duration">0:00</span>
<span class="play" onclick="handlePlay()">
<i class="material-icons">play_arrow</i>
</span>
</div>
</div>
III JavaScript
19) Добавляем код плеера:
var music = document.querySelector('.music-element')
var playBtn = document.querySelector('.play')
var seekbar = document.querySelector('.seekbar')
var currentTime = document.querySelector('.current-time')
var duration = document.querySelector('.duration')
function handlePlay() {
if (music.paused) {
music.play();
playBtn.className = 'pause'
playBtn.innerHTML = '<i class="material-icons">pause</i>'
} else {
music.pause();
playBtn.className = 'play'
playBtn.innerHTML = '<i class="material-icons">play_arrow</i>'
}
music.addEventListener('ended', function () {
playBtn.className = 'play'
playBtn.innerHTML = '<i class="material-icons">play_arrow</i>'
music.currentTime = 0
});
}
music.onloadeddata = function () {
seekbar.max = music.duration
var ds = parseInt(music.duration % 60)
var dm = parseInt((music.duration / 60) % 60)
duration.innerHTML = dm + ':' + ds
}
music.ontimeupdate = function () { seekbar.value = music.currentTime }
handleSeekBar = function () { music.currentTime = seekbar.value }
music.addEventListener('timeupdate', function () {
var cs = parseInt(music.currentTime % 60)
var cm = parseInt((music.currentTime / 60) % 60)
currentTime.innerHTML = cm + ':' + cs
}, false)
20) Скрипт повтора воспроизведения:
var repIcon = document.querySelector('.repeat')
function handleRepeat() {
if (music.loop == true) {
music.loop = false
repIcon.classList.toggle('active')
}
else {
music.loop = true
repIcon.classList.toggle('active')
}
}
21) И скрипт громкости плеера:
var volIcon = document.querySelector('.volume')
var volBox = document.querySelector('.volume-box')
var volumeRange = document.querySelector('.volume-range')
var volumeDown = document.querySelector('.volume-down')
var volumeUp = document.querySelector('.volume-up')
function handleVolume() {
volIcon.classList.toggle('active')
volBox.classList.toggle('active')
}
volumeDown.addEventListener('click', handleVolumeDown);
volumeUp.addEventListener('click', handleVolumeUp);
function handleVolumeDown() {
volumeRange.value = Number(volumeRange.value) - 20
music.volume = volumeRange.value / 100
}
function handleVolumeUp() {
volumeRange.value = Number(volumeRange.value) + 20
music.volume = volumeRange.value / 100
}
22) Закрываем оставшиеся теги </body> и </html>
https://supervikaw.blogspot.com/p/blog-page_10.html
ОтветитьУдалитьhttps://polinashirokoumova.blogspot.com/2026/03/petit-poney-html-body-padding-0-margin_19.html
ОтветитьУдалитьХайп, лайк
УдалитьЧугунова Елизавета - https://kukukukukukukukuky.blogspot.com/p/blog-page_9.html
ОтветитьУдалитьhttps://iamnovaiaa.blogspot.com/2026/03/the-weeknd-html-body-padding-0-margin-0.html
ОтветитьУдалитьhttps://slobodskayaelizavta.blogspot.com/p/macan-html-body-padding-0-margin-0-box_58.html
ОтветитьУдалитьhttps://makhanekvera.blogspot.com/2026/03/html-body-padding-0-margin-0-box-sizing_12.html
ОтветитьУдалитьhttps://maxvlasovblog.blogspot.com/p/remove-add-repeat-volumeup-000-000.html
ОтветитьУдалитьhttps://mediaeconomicsananina.blogspot.com/2026/03/blog-post_12.html
ОтветитьУдалитьhttps://besheniff.blogspot.com/2026/03/bbnos-i-could-be-one-avicii-remove-add.html
ОтветитьУдалитьhttps://gostevapolina.blogspot.com/2026/03/blog-post_12.html
ОтветитьУдалитьhttps://vikka56.blogspot.com/p/gone.html
ОтветитьУдалитьhttps://wasabibixoxo.blogspot.com/2026/03/ennemie-html-body-padding-0-margin-0_32.html
ОтветитьУдалитьhttps://akimkinaolesia.blogspot.com/p/gotye-197.html
ОтветитьУдалитьhttps://kulikovam22.blogspot.com/2026/03/html-body-padding-0-margin-0-box-sizing.html
ОтветитьУдалитьВыполнили Зубко Сабина и Акимкина Олеся.
ОтветитьУдалитьПоиском картинок занималась Зубко Сабина, с первого по тринадцатый пункт выполняла также Зубко. Акимкина Олеся публиковала банер, занимаясь пунктами с 14 по 18, так же нашла и преобразовала изображение кнопки в формат png
https://wasabibixoxo.blogspot.com/p/solnceemae.html
https://shadowdarksaid.blogspot.com/p/html-body-padding-0-margin-0-box-sizing.html
ОтветитьУдалитьhttps://uchebaandriuk.blogspot.com/2026/03/anastasia-andriuk.html
ОтветитьУдалитьhttps://mariaklimovich.blogspot.com/p/blog-page_15.html
ОтветитьУдалитьПрошлое задание с гугл баннером. Видела что вы написали: исправила все. https://mariaklimovich.blogspot.com/p/blog-page_16.html
Удалитьhttps://ekozil.blogspot.com/2026/03/blog-post.html
ОтветитьУдалитьВыполняли: Добышева Таисия и Козилова Елизавета
Таисия нашла все файлы и добавила в репозиторий плюс выполняла пункты с 1 по 13, Елизавета выполняла пункты с 14 по 22
Это не коллективное задание. Совместно делать можно было только задание с баннером.
Удалитьhttps://thdsop.blogspot.com/2026/03/lana.html
ОтветитьУдалитьВыполнила: Добышева Таисия
Ахрарова Виктория
ОтветитьУдалитьhttps://vikitoria999.blogspot.com/2026/03/ennemie-html-body-padding-0-margin-0.html