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

打开index.html和内部从编写基本的 HTML 结构开始。还链接style.css和两个 JS 文件。记得data.js在app.js. 否则我们将无法访问数据。

完成链接所有文件后,让我们创建第一件事。图像轮播。内部身体标签代码这个。

注意 - 将旋转木马包裹在home-section元素内。

@import url(‘https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700;900&display=swap’);

*{

margin: 0;

padding: 0;

box-sizing: border-box;

}

:root{

–background: #141414;

–text-color: #fff;

–primary-color: #63ff69;

–secondary-color: #000;

–alpha-color: rgba(0, 0, 0, 0.5);

–shadow: 0 15px 40px var(–alpha-color);

}

html{

background: var(–background);

display: flex;

justify-content: center;

}

body{

width: 100%;

height: 100vh;

max-width: 375px;

position: relative;

background: var(–background);

font-family: ‘roboto’, sans-serif;

color: var(–text-color);

}

::-webkit-scrollbar{

display: none;

}

.home-section{

width: 100%;

padding: 20px;

height: 100%;

padding-bottom: 100px;

overflow-y: auto;

}

/* carousel */

.carousel{

width: 100%;

height: 200px;

overflow: hidden;

border-radius: 20px;

box-shadow: var(–shadow);

position: relative;

}

.carousel img{

position: absolute;

width: 100%;

height: 100%;

object-fit: cover;

opacity: 0;

transition: 1s;

}

.carousel img.active{

opacity: 1;

}

您可以看到我们在这里使用了 CSS 变量,因此我们将来可以轻松更改此音乐播放器主题。

输出

在这里插入图片描述

请注意,这是为移动视图设计的,这就是为什么我使用 chrome 检查器以移动尺寸查看它的原因。

现在创建水平滚动播放列表。放在home-section里面

HTML

最近播放

华语热歌

古风戏腔

//+3

根据你的喜好

失恋回忆

经典老歌

//+3

CSS

.heading{

margin: 30px 0 10px;

text-transform: capitalize;

font-weight: 400;

font-size: 30px;

}

/* playlists card */

.playlists-group{

position: relative;

width: 100%;

min-height: 200px;

height: auto;

display: flex;

flex-wrap: nowrap;

overflow-x: auto;

}

.playlist-card{

flex: 0 0 auto;

max-width: 150px;

height: 100%;

margin-right: 20px;

}

.playlist-card-img{

width: 100%;

height: 150px;

object-fit: cover;

border-radius: 20px;

}

.playlist-card-name{

width: 100%;

text-align: justify;

font-size: 20px;

text-transform: capitalize;

padding: 5px;

}

输出

在这里插入图片描述

我们完成了home section。但是我们的旋转木马还不起作用,所以让我们使用 js 让它工作。打开app.js文件并开始编码。

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

let carouselImageIndex = 0;

const changeCarousel = () => {

carousel[carouselImageIndex].classList.toggle(‘active’);

if(carouselImageIndex >= carousel.length - 1){

carouselImageIndex = 0;

} else{

carouselImageIndex++;

}

carousel[carouselImageIndex].classList.toggle(‘active’);

}

setInterval(() => {

changeCarousel();

}, 3000);

您可以看到我们的轮播元素,每 3 秒切换一次图像active类。

在这里插入图片描述

现在让我们制作我们的播放器部分。

🍖 player-section 播放器部分


首先使其最小化视图。

song 1

artist 1

00 : 00

00 : 00

如果你看到我们的播放器结构,你会注意到我们有很多hide元素的类。此类hide指示元素将在最小化视图中隐藏。我们为所有元素提供了相同的类,因此我们可以轻松地在 CSS 中设置它们的样式。

.music-player-section{

width: 100%;

height: 100px;

position: fixed;

bottom: 0;

left: 0;

background: var(–alpha-color);

backdrop-filter: blur(50px);

transition: 1s;

}

.music-seek-bar{

-webkit-appearance: none;

width: 100%;

position: absolute;

top: -4px;

height: 8px;

background: var(–secondary-color);

overflow: hidden;

}

.music-seek-bar::-webkit-slider-thumb{

-webkit-appearance: none;

height: 10px;

width: 5px;

background: var(–primary-color);

cursor: pointer;

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

}

.current-song-name{

font-weight: 300;

font-size: 20px;

text-align: center;

margin-top: 5px;

text-transform: capitalize;

}

.controls{

position: relative;

width: 80%;

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;

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

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
img
img
img

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
img

er;

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;

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

深知大多数同学面临毕业设计项目选题时,很多人都会感到无从下手,尤其是对于计算机专业的学生来说,选择一个合适的题目尤为重要。因为毕业设计不仅是我们在大学四年学习的一个总结,更是展示自己能力的重要机会。

因此收集整理了一份《2024年计算机毕业设计项目大全》,初衷也很简单,就是希望能够帮助提高效率,同时减轻大家的负担。
[外链图片转存中…(img-hglJoStz-1712552871294)]
[外链图片转存中…(img-WNnDxVNa-1712552871295)]
[外链图片转存中…(img-oCkYi7cD-1712552871295)]

既有Java、Web、PHP、也有C、小程序、Python等项目供你选择,真正体系化!

由于项目比较多,这里只是将部分目录截图出来,每个节点里面都包含素材文档、项目源码、讲解视频

如果你觉得这些内容对你有帮助,可以添加VX:vip1024c (备注项目大全获取)
[外链图片转存中…(img-RBk9HSmI-1712552871296)]

  • 14
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值