前言:音乐与代码,谁说不配?
作为一名前端er,写代码时怎么能没有音乐?但市面上的音乐播放器不是太复杂,就是UI一言难尽。今天,我就用最纯粹的HTML+CSS,撸一个高颜值、极简风的音乐播放器,主打“周杰伦·星空”主题,陪你优雅敲代码!
一、项目结构:极简主义的浪漫
项目结构超级清爽:
/music
├── index.html
├── style.css
└── image/
没有JS,没有多余依赖,只有HTML和CSS的极致配合。你以为这样就没技术含量?别急,后面有你想不到的细节!
二、HTML结构:每一行都在“唱歌”
先来看看index.html
,结构分为三大块:
- header:返回按钮、歌曲标题、更多操作
- body:专辑封面、歌曲信息、进度条、播放控制
- footer:迷你播放器,展示当前播放歌曲和操作
核心代码如下:
<div class="music">
<div class="header">
<div class="back"><i class="iconfont icon-zuojiantou"></i></div>
<div class="title">
<p class="name">星空</p>
<p class="author">周杰伦</p>
</div>
<div class="more"><i class="iconfont icon-more"></i></div>
</div>
<div class="body">
<img class="image" src="./image/img.png" alt="">
<div class="text">
<p class="title1">星空</p>
<p class="author1">周杰伦 - 魔杰座</p>
</div>
<div class="time">
<p class="now">2:15</p>
<p class="total">4:30</p>
</div>
<div class="progress">
<div class="progress-bar"></div>
</div>
<div class="play">
<div class="shang"><i class="iconfont icon-shangyishoushangyige"></i></div>
<div class="bofang"><i class="iconfont icon--zhengzaibofang"></i></div>
<div class="xia"><i class="iconfont icon-xiayigexiayishou"></i></div>
</div>
</div>
<div class="footer">
<img class="image1" src="./image/img1.png" alt="">
<div class="text1">
<p class="title2">星空</p>
<p class="author2">周杰伦</p>
</div>
<div class="like"><i class="iconfont icon-aixin"></i></div>
<div class="table"><i class="iconfont icon-gengduo"></i></div>
</div>
</div>
是不是很像网易云的迷你播放器?但我们用的只是最基础的标签!
三、CSS魔法:高颜值的秘密
1. 弹性布局,优雅对齐
全局采用Flex布局,header、body、footer都用display: flex
,让每个元素都能优雅地“站队”:
.music {
display: flex;
flex-direction: column;
height: 100vh;
}
.header, .footer {
display: flex;
align-items: center;
}
.body {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
}
2. 渐变背景,夜空下的星光
播放器的主体采用黑色渐变背景,低调中带点高级感:
.body {
background: linear-gradient(60deg, #1C1C1C, #2B2B2B);
}
让你仿佛置身夜空,和周董一起仰望星星。
3. 圆角与阴影,细节拉满
专辑封面、按钮、进度条都用了圆角和阴影,UI质感瞬间提升:
.image {
border-radius: 24px;
box-shadow: 0px 20px 25px -5px rgba(0,0,0,0.1), 0px 8px 10px -6px rgba(0,0,0,0.1);
}
.bofang {
background: #FFFFFF;
border-radius: 28px;
}
4. 进度条与进度点,极简不简单
进度条用浅灰色,进度点用白色圆点,极简风格:
.progress {
width: 311px;
height: 8px;
background: #E6E6E6;
border-radius: 4px;
display: flex;
align-items: center;
}
.progress-bar {
width: 12px;
height: 12px;
background: #FFFFFF;
border-radius: 50%;
}
你可以根据播放进度动态调整progress-bar
的位置(如果加JS的话)。
5. 图标字体,轻松实现高质量icon
所有按钮和操作都用iconfont,兼容性好,加载快,样式统一:
<i class="iconfont icon-zuojiantou"></i>
<i class="iconfont icon--zhengzaibofang"></i>
<i class="iconfont icon-aixin"></i>
四、技术细节与实用技巧
1. Flex布局的妙用
justify-content: space-between
让header/footer的内容两端对齐margin-left: auto
让某个元素自动靠右flex: 1
让中间内容自适应填充空间
2. 渐变色的选择
黑色渐变让播放器更有科技感,配合白色文字和icon,夜间模式友好,护眼又高级。
3. 响应式设计
虽然没用媒体查询,但所有宽度都用px,适合移动端。你可以轻松加上@media
让它适配更多屏幕。
4. 组件化思维
每个功能区都用独立class,方便后续扩展,比如加歌词、加音量条、加动画等。
五、彩蛋:如何让播放器“动”起来?
虽然本项目没用JS,但你可以很容易加上:
- 点击播放按钮切换icon
- 拖动进度条同步播放进度
- 动态切换歌曲和封面
只需几行JS,极简播放器秒变“全能王”!
六、总结:用CSS和HTML,打造属于你的音乐宇宙
音乐和代码一样,都是灵魂的表达。用最基础的HTML+CSS,也能做出高颜值、极简风的音乐播放器。下次写代码时,不妨让周董的《星空》陪你一起,灵感和效率齐飞!
项目源码已开源,欢迎点赞、收藏、评论,和我一起用代码玩转音乐!