用纯CSS+HTML撸一个高颜值音乐播放器:周杰伦《星空》陪你写代码!

234 阅读3分钟

前言:音乐与代码,谁说不配?

作为一名前端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,也能做出高颜值、极简风的音乐播放器。下次写代码时,不妨让周董的《星空》陪你一起,灵感和效率齐飞!


项目源码已开源,欢迎点赞、收藏、评论,和我一起用代码玩转音乐!