使用 HTML、CSS 和 JS 创建在线音乐播放器(含免费完整源码)

本文详细描述了如何使用HTML、CSS和JavaScript创建一个音乐播放器,包括样式调整、导航功能和音乐播放控制。作者逐步展示了如何设置音乐源、添加播放/暂停控制、前进/后退功能以及创建搜索栏和音量滑块等特性。
摘要由CSDN通过智能技术生成

margin: auto;

display: flex;

justify-content: center;

align-items: center;

height: 60px;

font-size: 30px;

}

.controls span{

display: none;

opacity: 0;

transition: 1s;

}

.music-player-section.active .controls{

justify-content: space-between;

}

.music-player-section.active .controls span{

font-size: 25px;

display: block;

opacity: 0.5;

}

.music-player-section.active .controls span.active{

color: var(–primary-color);

opacity: 1;

}

.controls .main i{

margin: 0 5px;

display: none;

}

.controls .main i.active{

display: inline;

}

现在让我们创建最大化视图的样式。

.music-player-section .hide{

display: none;

opacity: 0;

transition: 1s;

}

.music-player-section.active .hide{

display: block;

opacity: 1;

}

.music-player-section.active{

width: 100%;

height: 100%;

padding: 30px;

display: flex;

flex-direction: column;

}

.music-player-section.active .music-seek-bar{

position: relative;

display: block;

border-radius: 50px;

margin: auto;

}

.music-player-section.active .current-song-name{

font-size: 40px;

}

.music-player-section.active .controls{

width: 100%;

font-size: 50px;

}

.artist-name{

text-align: center;

font-size: 20px;

text-transform: capitalize;

}

.cover{

width: 30vh;

height: 30vh;

object-fit: cover;

margin: auto;

border-radius: 20px;

box-shadow: var(–shadow);

}

.current-time{

position: absolute;

margin-top: 5px;

left: 30px;

}

.duration{

position: absolute;

margin-top: 5px;

right: 30px;

}

.icon{

position: absolute;

top: 60px;

transform: scale(1.3);

}

.back-btn{

left: 40px;

}

.nav-btn{

right: 40px;

}

/* volume button */

.volume-slider{

-webkit-appearance: none;

width: 100px;

height: 40px;

position: absolute;

right: -35px;

bottom: 80px;

transform: rotate(-90deg);

border-radius: 20px;

background: var(–alpha-color);

overflow: hidden;

opacity: 0;

display: none;

}

.volume-slider.active{

opacity: 1;

display: block;

}

.volume-slider::-webkit-slider-thumb{

-webkit-appearance: none;

height: 40px;

width: 10px;

background: var(–primary-color);

box-shadow: -200px 0 1px 200px var(–primary-color);

}

输出

在这里插入图片描述

并检查这些样式,现在像这样将active添加到 class music-player-section 中去。

输出

在这里插入图片描述

我们最终会让这个播放器发挥作用。现在从player section类删除这个active。让我们创建播放列表部分。

🏆 playlist-section 播放列表部分


播放列表

song 1

// +7

CSS

.playlist{

width: 100%;

height: 100%;

position: fixed;

top: 0;

right: -100%;

padding: 30px 0;

background: var(–background);

z-index: 3;

transition: 1s;

overflow: auto;

}

.playlist.active{

right: 0;

}

.title{

font-weight: 300;

font-size: 40px;

text-align: center;

margin-top: 15px;

text-transform: capitalize;

margin-bottom: 30px;

}

.queue{

width: 100%;

height: 80px;

padding: 0 30px;

display: flex;

align-items: center;

border-top: 2px solid var(–alpha-color);

}

.queue-cover{

width: 60px;

height: 60px;

border-radius: 10px;

overflow: hidden;

margin-right: 20px;

position: relative;

}

.queue-cover img{

width: 100%;

height: 100%;

object-fit: cover;

}

.queue-cover i{

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

font-size: 30px;

color: var(–primary-color);

display: none;

}

.queue.active i{

display: block;

}

.queue .name{

font-size: 22px;

text-transform: capitalize;

}

输出

在这里插入图片描述

我们已经完成了所有的造型。active也从播放列表部分删除类。

现在让我们 JS 使这个音乐应用程序功能齐全。

✨ navigation 导航部分


我们的音乐播放器中有三个部分。因此,为这个应用程序设置导航系统对我们来说非常重要。通过它我们可以轻松地从一个部分导航到另一个部分。对?所以编码这个。

/导航

切换音乐播放器

const musicPlayerSection = document.querySelector(‘.music-player-section’);

let clickCount = 1;

musicPlayerSection.addEventListener(‘click’, () => {

if(clickCount >= 2){

musicPlayerSection.classList.add(‘active’);

clickCount = 1;

return;

}

clickCount++;

setTimeout(() => {

clickCount = 1;

}, 250);

})

/// 从音乐播放器返回

const backToHomeBtn = document.querySelector(‘.music-player-section .back-btn’);

backToHomeBtn.addEventListener(‘click’, () => {

musicPlayerSection.classList.remove(‘active’);

})

/// 访问播放列表

const playlistSection = document.querySelector(‘.playlist’);

const navBtn = document.querySelector(‘.music-player-section .nav-btn’);

navBtn.addEventListener(‘click’, () => {

playlistSection.classList.add(‘active’);

})

// 从播放列表返回到音乐播放器

const backToMusicPlayer = document.querySelector(‘.playlist .back-btn’);

backToMusicPlayer.addEventListener(‘click’, () => {

playlistSection.classList.remove(‘active’);

})

//导航完成

这是基本的 JS,我还在代码中添加了注释。因此,如果您对此代码有任何疑问,请随时在讨论中问我。我们的导航完成了。所以让我们创建我们的音乐播放器。

🎶 music 音乐部分


对于音乐播放器,我们的页面中需要一个音频源,但现在我们没有。为此在 index.html 中创建一个音频元素。在 body 标记的开头创建此元素。

现在我们必须创建很多函数,所以在开始之前让我们快速选择我们可能需要进行操作的所有元素。

/// 音乐

let currentMusic = 0;

const music = document.querySelector(‘#audio-source’);

const seekBar = document.querySelector(‘.music-seek-bar’);

const songName = document.querySelector(‘.current-song-name’);

const artistName = document.querySelector(‘.artist-name’);

const coverImage = document.querySelector(‘.cover’);

const currentMusicTime = document.querySelector(‘.current-time’);

const musicDuration = document.querySelector(‘.duration’);

const queue = […document.querySelectorAll(‘.queue’)];

// 在此处选择所有按钮

const forwardBtn = document.querySelector(‘i.fa-forward’);

const backwardBtn = document.querySelector(‘i.fa-backward’);

const playBtn = document.querySelector(‘i.fa-play’);

const pauseBtn = document.querySelector(‘i.fa-pause’);

const repeatBtn = document.querySelector(‘span.fa-redo’);

const volumeBtn = document.querySelector(‘span.fa-volume-up’);

const volumeSlider = document.querySelector(‘.volume-slider’);

现在设置音乐源。

// 音乐设置功能

const setMusic = (i) => {

seekBar.value = 0;

let song = songs[i];

currentMusic = i;

music.src = song.path;

songName.innerHTML = song.name;

artistName.innerHTML = song.artist;

coverImage.src = song.cover;

setTimeout(() => {

seekBar.max = music.duration;

musicDuration.innerHTML = formatTime(music.duration);

}, 300);

currentMusicTime.innerHTML = ‘00 : 00’;

queue.forEach(item => item.classList.remove(‘active’));

queue[currentMusic].classList.add(‘active’);

}

setMusic(0);

你可以注意到,为了设置持续时间,我们调用了formatTime,现在创建这个。

// 格式持续时间为 00 : 00 格式

const formatTime = (time) => {

let min = Math.floor(time / 60);

if(min < 10){

min = 0 + min;

}

let sec = Math.floor(time % 60);

if(sec < 10){

sec = 0 + sec;

}

return ${min} : ${sec};

}

现在让我们添加播放/暂停事件。

// playBtn 点击事件

playBtn.addEventListener(‘click’, () => {

music.play();

playBtn.classList.remove(‘active’);

pauseBtn.classList.add(‘active’);

})

// pauseBtn 点击事件

pauseBtn.addEventListener(‘click’, () => {

music.pause();

pauseBtn.classList.remove(‘active’);

playBtn.classList.add(‘active’);

})

我们已经完成了音乐的设置和播放/暂停。现在进行向前/向后事件。

// 向前按钮

forwardBtn.addEventListener(‘click’, () => {

if(currentMusic >= songs.length - 1){

currentMusic = 0;

} else{

currentMusic++;

}

setMusic(currentMusic);

playBtn.click();

})

// 后退按钮

backwardBtn.addEventListener(‘click’, () => {

if(currentMusic <= 0){

currentMusic = songs.length - 1;

} else{

currentMusic–;

}

setMusic(currentMusic);

playBtn.click();

})

快完成了,现在创建搜索栏功能。

// 搜索栏事件

setInterval(() => {

seekBar.value = music.currentTime;

currentMusicTime.innerHTML = formatTime(music.currentTime);

if(Math.floor(music.currentTime) == Math.floor(seekBar.max)){

if(repeatBtn.className.includes(‘active’)){

setMusic(currentMusic);

playBtn.click();

} else{

forwardBtn.click();

}

}

}, 500)

seekBar.addEventListener(‘change’, () => {

music.currentTime = seekBar.value;

})

做了这个之后。创建刷新功能和音量选项。

// 刷新按钮

repeatBtn.addEventListener(‘click’, () => {

repeatBtn.classList.toggle(‘active’);

})

// 音量部分

volumeBtn.addEventListener(‘click’, () => {

volumeBtn.classList.toggle(‘active’);

volumeSlider.classList.toggle(‘active’);

})

volumeSlider.addEventListener(‘input’, () => {

music.volume = volumeSlider.value;

})

我们的播放器完成了。我们要做的最后一件事是使我们的播放列表正常运行。

queue.forEach((item, i) => {

item.addEventListener(‘click’, () => {

setMusic(i);

playBtn.click();

})

})

到这里我们已经完成了所有代码。播放器、导航栏、播放列表、轮播图,刷新,音量加减等等

🛬 wuhu ! 起飞 !


希望通过本文,您已经学会了如何使用 HTML、CSS 和 JS 的在线音乐播放器。我之前使用 HTML、CSS 和 JavaScript 制作了更多类型的小工具,如果您愿意,可以查看这些设计。

使用 HTML、CSS 和 JS 的简单倒数计时器

使用 HTML、CSS 和 JavaScript 制作的随机密码生成器

使用 HTML、CSS、JS 和 API 制作一个很棒的天气 Web 应用程序

你真的熟练运用 HTML5 了吗,这10 个酷炫的 H5 特性你会几个?

使用 HTML、CSS 和 JS 创建响应式可过滤的游戏+工具展示页面

11个基于HTML/CSS/JS的情人节表白可爱小游戏、小动画【情人节主题征文】

我已经写了很长一段时间的技术博客,并且主要通过CSDN发表,这是我的一篇 Web 在线音乐播放器教程。我喜欢通过文章分享技术与快乐。您可以访问我的博客: https://haiyong.blog.csdn.net/ 以了解更多信息。希望你们会喜欢!😊

💌 欢迎大家在评论区提出意见和建议!💌

🎡 完整源码下载

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
img

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述
  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现一个圆形的音乐播放器,可以使用CSS的一些属性和方法来实现。首先,在HTML创建一个音乐播放器的容器,可以使用div元素,并为其添加一个唯一的ID,例如"music-player"。 然后,在CSS中设置这个容器的样式。通过设置元素的宽度和高度为相同的值,并将边框半径设置为50%来创建一个圆形的形状。可以使用"border-radius"属性来实现这个效果。另外,可以设置背景颜色、文字颜色、边框样式等样式来自定义播放器的外观。 接下来,可以在容器中添加播放器的控制按钮和信息显示区域。可以使用HTML的按钮元素来创建播放、暂停、音量调节等按钮,并为其添加适当的类名以方便CSS样式的设置。还可以使用HTML的元素来显示音乐的标题、歌手等信息。 为播放器添加交互功能,可以使用CSS的伪类选择器和过渡效果。例如,当鼠标悬停在播放按钮上时,可以通过设置:hover伪类选择器来改变按钮的样式。可以使用过渡效果来实现平滑的样式切换,例如改变按钮的背景颜色或边框样式。 最后,使用JavaScript来为播放器添加播放、暂停、音量调节等功能。通过监听按钮的点击事件,可以调用相应的函数来处理播放器的操作。例如,点击播放按钮时,可以通过JavaScript播放音乐文件。 综上所述,通过以上步骤可以创建一个圆形的音乐播放器。具体的样式和功能可以根据实际需要进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值