如何用Vue3打造一个酷炫的音乐播放器

news2025/1/15 13:35:16

Alt

本文由ScriptEcho平台提供技术支持

项目地址:传送门

Spotify音乐卡片组件

应用场景

本代码用于构建一个类似于Spotify音乐播放器中的音乐卡片组件,可展示歌曲信息、控制播放、调节音量等功能。

基本功能

该音乐卡片组件主要包含以下功能:

  • **歌曲信息展示:**显示歌曲标题、艺术家名称和专辑封面。
  • **播放控制:**提供播放/暂停、上一曲、下一曲等控制按钮。
  • **音量调节:**允许用户通过滑动条调节音量。
  • **收藏:**用户可以点击心形图标将歌曲收藏到播放列表中。
  • **进度条:**显示歌曲的当前播放进度和总时长。

功能实现步骤及关键代码分析

1. HTML结构

该组件的HTML结构如下:

<template>
  <div class="card">
    <!-- 歌曲信息 -->
    <div class="top">
      <div class="pfp">
        <!-- 播放状态动画 -->
        <div class="playing">
          <div class="greenline line-1"></div>
          <div class="greenline line-2"></div>
          <div class="greenline line-3"></div>
          <div class="greenline line-4"></div>
          <div class="greenline line-5"></div>
        </div>
      </div>
      <div class="texts">
        <p class="title-1">Soldiers Rage</p>
        <p class="title-2">Tha Mechanic</p>
      </div>
    </div>

    <!-- 播放控制和音量调节 -->
    <div class="controls">
      <svg class="volume_button">...</svg>
      <div class="volume">...</div>
      <svg>...</svg>
      <svg>...</svg>
      <svg>...</svg>
      <div class="air">...</div>
      <svg class="heart">...</svg>
    </div>

    <!-- 进度条 -->
    <div class="song-time">
      <p class="timetext time_now">1:31</p>
      <div class="time">
        <div class="elapsed"></div>
      </div>
      <p class="timetext time_full">3:46</p>
    </div>
  </div>
</template>

2. 播放状态动画

播放状态动画使用@keyframesanimation属性实现。当播放时,绿色线条会以不同的延迟逐个缩放,模拟出播放的动效。

@keyframes playing {
  0% {
    transform: scaleY(0.1);
  }

  33% {
    transform: scaleY(0.6);
  }

  66% {
    transform: scaleY(0.9);
  }

  100% {
    transform: scaleY(0.1);
  }
}

.playing {
  animation: infinite playing 1s ease-in-out;
}

3. 音量调节

音量调节功能通过滑动条实现。当用户点击音量按钮时,音量调节控件会出现,用户可以通过拖动滑块调节音量。

<div class="volume">
  <div class="slider">
    <div class="green"></div>
  </div>
  <div class="circle"></div>
</div>

4. 进度条

进度条使用HTML5的range元素实现。当歌曲播放时,elapsed元素的宽度会随着当前播放时间变化而动态更新。

<div class="song-time">
  <p class="timetext time_now">1:31</p>
  <div class="time">
    <div class="elapsed"></div>
  </div>
  <p class="timetext time_full">3:46</p>
</div>

总结与展望

开发这个音乐卡片组件是一个有趣的经历,它让我了解了如何使用HTML、CSS和JavaScript来创建交互式且美观的UI组件。未来,我计划对该组件进行以下拓展和优化:

  • **响应式设计:**使组件在不同屏幕尺寸下都能正常显示。

  • **自定义主题:**允许用户更改组件的主题和颜色。

  • **播放列表支持:**添加一个播放列表功能,允许用户管理和播放歌曲列表。

  • **歌词显示:**集成歌词显示功能,让用户可以在播放歌曲时查看歌词。

    更多组件:

    在这里插入图片描述


    在这里插入图片描述

    获取更多Echos

    本文由ScriptEcho平台提供技术支持

    项目地址:传送门

    扫码加入AI生成前端微信讨论群:

扫码加入群聊

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1813131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万万没想到,一个不起眼的小功能,差点把我们项目搞崩溃!

大家好&#xff0c;我是程序员鱼皮。今天分享一个真实项目开发的小故事。 故事 最近我们团队一直在持续更新编程导航网站&#xff0c;优化了界面&#xff0c;也新增了不少功能。现在网站长下面这样&#xff0c;是不是看着比以前舒服多了&#xff1f; 编程导航&#xff1a;htt…

萌啦OZON数据分析工具:OZON电商卖家的得力助手

在当下电商领域&#xff0c;数据分析的重要性不言而喻。对于在OZON这一俄罗斯电商平台上耕耘的卖家而言&#xff0c;拥有一款高效、准确的数据分析工具&#xff0c;无疑是提升销售业绩、优化运营策略的关键。今天&#xff0c;我们就来聊聊“萌啦OZON数据分析工具”&#xff0c;…

模型的手工下载技巧-代码自动批量下载模型文件

之前分享过通过镜像网站手工下载模型文件的技巧&#xff08;见这里模型的手工下载技巧-镜像网站的使用&#xff09;。但有的时候&#xff0c;模型文件数量较多&#xff0c;一个个​手工下载非常不便。比如著名的“麦橘写实”模型。 有没有什么好办法可以把整个目录都下载下来呢…

泰国街头狂潮肖战王一博魅力引爆

泰国街头狂潮&#xff01;肖战王一博魅力引爆&#xff0c;中国明星影响力横扫东南亚&#xff01;当《怦然心动20岁》的镜头转向泰国的繁华街头&#xff0c;一场意想不到的明星风暴正在悄然酝酿。在这场青春的盛宴中&#xff0c;嘉宾们随机采访路人&#xff0c;试图探寻泰国人民…

rospkg.os_detect.OsNotDetected检测不到系统的解决办法

遇到上述报错时&#xff0c;可以参考博客进行解决

美容美发门店SaaS收银系统源码分享、连锁美业拓客系统预约系统源码

美业收银管理系统对于美容、美发、医美行业的门店来说至关重要&#xff0c;它不仅可以帮助提高管理效率和降低成本&#xff0c;还可以改善客户体验并促进业务增长。 &#xff08;私信获取更多方案/演示视频&#xff09; 以下是美业系统的一些作用和重要性&#xff1a; 1. 记录…

两台电脑之间如何互传文件?快学起来

电脑已经是现代社会不可或缺的综合性办公设备&#xff0c;无论是在学习还是工作中&#xff0c;我们很多时候都需要在两台电脑之间互传文件&#xff0c;以便实现文件共享和共同协作。 两台电脑之间如何互传文件&#xff1f;本文将探讨两台电脑互传文件的意义、方法和注意事项。…

远程医疗平台如何连接医生和患者?

远程医疗平台&#xff0c;以其创新的信息技术手段&#xff0c;构筑了一个无视地理界限的医疗服务新体系&#xff0c;实现了医患之间的实时互动和诊疗服务。例如欣九康诊疗系统&#xff0c;通过一系列功能模块&#xff0c;有效连接了医生与患者&#xff0c;为两者提供了一个全面…

2024/6/11随笔

端午买了很多地毯和一些氛围灯&#xff0c;地毯拼夕夕也好贵。地毯折合的一块70*70的8块钱了。。。真是造孽啊&#xff0c;看今天朋友圈怎么都去旅游了呢&#xff1f;不行&#xff0c;明年我也想去旅游了&#xff0c;先去广州再西安&#xff0c;然后再去上海。剩下的就随便去哪…

UML精简概述

UML精简概述 UML精简概述 UML精简概述UML的定义常见的关系 在学习设计模式之前&#xff0c;需要掌握一些预备知识&#xff0c;主要包括UML类图和面向对象设计原则&#xff0c;它们是“基础内功”&#xff0c;将为后续的“深入修行”奠定基础。UML类图可用于描述每一个设计模式的…

web网页测试bug定位详细步骤

前言 1、前置条件 1&#xff09;需要的知识 熟透系统业务、团队成员情况&#xff1b; 熟悉使用F12或抓包工具&#xff1b; 了解HTTP/HTTPS协议&#xff1b; 了解系统的架构&#xff0c;数据走向&#xff1b; 2&#xff09;定位前的操作 保存bug产生的记录&#xff1b; 排除…

videoJS 视频 + 独一无二皮肤 + mp4/m3u8

推荐和参考文章&#xff1a; video.js调用-腾讯云开发者社区-腾讯云> 一、总结&#xff08;点击显示或隐藏总结内容&#xff09;一句话总结&#xff1a;网上有各种细致的现成的代码可以拿来用&#xff0c;没必要自己死专1、video.js有两种初始化方式&#xff1f;一种是在v…

生成式AI时代已来,你是否做好了准备?

面对正在来临的生成式AI时代&#xff0c;从个人到企业&#xff0c;都应该为之做好充足的准备。 生成式AI时代的黎明已经来临 “生成式AI时代的黎明已经来临&#xff0c;它将会改变我们每个人的生活和工作方式、改变每一个行业。”在近日召开的2024亚马逊云科技中国峰会上&#…

第5章:模型预测控制(MPC)

5.1 模型预测控制&#xff08;Model Predictive Controller -- MPC&#xff09; 注&#xff1a;MPC 更像是一种控制策略的框架&#xff0c;它使用了最优的控制思想在里面&#xff0c;如下的几种控制策略其实都是 MPC 的变体&#xff1b; MHC&#xff08;Moving Horizon Contr…

ARM32开发--PWM通道输出

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 文章目录 前言 内容 需求 通用定时器多通道 开发流程 多通道配置 占空比更新 完整代码 高级定时器通道输出 开发流程 通道配置 Break配置 完整代码 总结 前言 加强掌握…

专属部署简介

什么是专属部署 专属部署(也称为专用部署)是一种部署选择&#xff0c;它允许用户将数据和应用部署到自己的专用云基础架构中&#xff0c;而不是与其他租户共享基础架构。这种部署方式可以提供更高的安全性、控制力和性能优化&#xff0c;因为用户可以完全控制和管理自己的基础设…

IT人的拖延——让“优先队列”带你走出“频繁切换”的拖延

在快节奏的IT行业&#xff0c;我们经常会面临多任务并行的挑战&#xff0c;经常这个事情还没做&#xff0c;那个事情就找上门&#xff0c;然后放下手中的活&#xff0c;去干另一件事。我们的工作环境多半是开放的环境&#xff0c;频繁的任务切换不仅降低了工作效率&#xff0c;…

2024/06/11--代码随想录算法1/17|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

理论基础 动态规划&#xff1a;当前状态由前面的状态推导而来 贪心&#xff1a;局部选最优 动态规划5步曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契数 力扣链接 动态规划5步曲 确定d…

【机器学习】让计算机变得更加智能

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 目录 机器学习&#xff1a;让计算机…

[linux] 上手新ubuntu机器的初始化工作(自用侵删)

文章目录 环境类Vimzshother 应用类Typora激活环境准备解包替换文件app.asar激活Typora VsCodeextension.vscode乱码 WattToolkitQQWPS输入法:FcitxDeepin-wine : Wechat 环境类 Vim 直接贴配置 vim-Plug: let mapleader "," let g:mapleader "," le…