前言

本次项目是对前面的vue知识的综合应用:基于vue实现一个网页版播放器。
需要向网易云接口发送请求,这是相关接口使用文档:
https://api.imjad.cn/cloudmusic.md

页面布局

1,HTML页面布局
本次页面布局相对复杂,我将整个播放器页面用“div”分成上、中下三块。其中:
上方放搜索框和播放器名字;
中间是主要内容块,又分为左右两块,左边用来显示当前播放音乐对应的图片和名字,右边显示搜索结果(20条);
底部显示音乐播放进度条。
下面的具体代码:

<div id="musicplay"><div id="top"><span>在线随听</span><div id="search"><input type="text" placeholder="请输入内容" v-on:keyup.enter = "search" v-model = "name"/></div></div><div id="cont"><div id="left"><img v-bind:src ="songImg" /><p>{{text}}</p> </div><div id="line"></div><div id="right"><ul><li v-for="(item,i) in obj"><img src="imgs/Music Entertainment.png"  @click="playIt(i)"/><p>{{item.song}}</p></li></ul></div></div><div id="bottom"><audio v-bind:src ="thisSrc" controls="" autoplay="" style="width: 100%;"></audio></div>
</div>

2,CSS层叠样式表
在实际处理时,测试发现,页面是自动换行的,但是为了效果美观,我想让搜索结果显示处的每一个LI的内容都不换行。所以我用了“white-space:nowrap;”来强制不换行。
其他的都是一些常见的属性,在此不再赘述,老规矩,直接放代码:

*{padding:0;margin:0;
}#musicplay{position: absolute;background-color: #fff;left: 20%;top: 64px;width: 60%;height: 500px;box-shadow: 2px 2px 4px #5e72e4;
}
#top{width: 100%;height: 50px;background-color:#5e72e4;
}
#top span{padding-left: 8px;color: #fff;line-height: 50px;}
#search{position: absolute;right: 8px;top: 10px;
}
#search input{width: 180px;height: 24px;padding-left: 8px;border-radius: 12px;border: 1px solid #5e72e4;box-shadow: 1px 1px 2px #5c5c5f;
}#cont{position: absolute;margin: 8px 0;width: 100%;height: 400px;
}
#left{position: absolute;left: 1%;width: 60%;height: 100%;
}
#left img{position: absolute;left: 20%;top: 20%;height: 60%;width: auto;
}
#left p{font-size: 24px;font-weight: 500;color: #5e72e4;
}
#line{position: absolute;top: 10%;left: 62%;width: 0;height: 80%;border-left:1px solid #59666d;opacity: 0.4;
}
#right{position: absolute;padding-top: 6%;right: 1%;width: 36%;height: 90%;
}
ul{width: 100%;height: 90%;overflow: auto;
}
li{width: 100%;height: 30px;list-style: none;padding-left: 2%;
}
li img{/* position: absolute; */float: left;width: 24px;height: auto;cursor: pointer;
}
li p{font-size: medium;float: left;width: 85%;/* 强制不换行 */white-space:nowrap;
}#bottom{position: absolute;bottom: 4px;width: 100%;height: 50px;background-color: #f4f5f7;
}
#bottom img{position: absolute;left: 4%;top: 16px;width: 20px;height: auto;
}
#bottom p{position: absolute;left: 10%;top: 6px;font-size: 10px;}

至此,页面初步效果如图:

逻辑实现

梳理:
1)分析发现,一共有两处地方需要发送申请,一次是搜索内容输入完毕按回车键时;一次是点击具体音乐前面的紫色图标时。
2)两次均采用get方式发送异步请求。
3)搜索框处对应的请求发送时,服务器会返回20个相关数据,里面有歌曲名字、封面图片、id等信息。需要用一个循环将所需信息保存起来备用。
4)点击相应的紫色图标时,将其对应的id作为参数一起发送给服务器,服务器会返回一些与该id相关数据,其中就有我们所需的播放该音乐的地址。至此一切就明了了。
提示:

  1. 在使用vue来实现该音乐播放器时,要注意用变量将"this"保存下来,不然随着循环的进行,此“this”就非彼“this”了,故就报错了。
    2)注意修改标签的属性值要使用”v-bind“(具有使用见代码)
    下面是代码:
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script><script>var d = new Vue({el : "#musicplay",data : {text : "",thisSinger : "",thisSrc : "",obj : [] ,songImg : "imgs/playimg.png"},methods : {search : function(){var that = this;this.obj.splice(0, 20);axios.get("https://api.imjad.cn/cloudmusic/?type=search&search_type=1&s="+this.name).then(function(datas){for(var i = 0; i < datas.data.result.songs.length; i++ ){that.obj.push({"song" : datas.data.result.songs[i].name,"imgSrc" : datas.data.result.songs[i].al.picUrl,"id" : datas.data.result.songs[i].privilege.id,});}});},playIt : function(i){var that = this;this.text = this.obj[i].song;axios.get("https://api.imjad.cn/cloudmusic/?type=song&br=128000&id="+this.obj[i].id).then(function(ddd){that.thisSrc = ddd.data.data[0].url;that.songImg = that.obj[i].imgSrc;});}}});</script>

效果


基于vue的音乐播放器

vue||简易版音乐播放器相关推荐

  1. HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌)

    用HTML+CSS+原生JS写一个简易的音乐播放器(仅播放一首歌) 效果如下:(鼠标点击按钮可以实现播放或暂停,按钮会旋转,实现了歌词同步,功能还需改进) 代码如下: <!DOCTYPE htm ...

  2. Vue3实现简易的音乐播放器组件

    前言 用Vue3实现一个简易的音乐播放器组件 其效果图如下所示: 实现这个组件需要提前做的准备: 引入ElementUI 引入字节跳动图标库 一张唱见图片 将要播放的音乐上传到文件服务器上,并提供一个 ...

  3. Vue实现仿音乐播放器项目总述以及阶段目录

    Github地址 https://github.com/badaoliumang/vuemusicplayer Vue实现仿音乐播放器各阶段代码 https://download.csdn.net/d ...

  4. Vue实现仿音乐播放器6-实现新歌速递与swiper轮播图切换

    前言 前面在首页已经完成今日推荐以及访问百度API获取数据,现在继续来完善home主页. 效果 新歌速递 swiper实现轮播图 实现 实现新歌速递 在components下新建新歌速递组件News_ ...

  5. Vue实现仿音乐播放器3-将项目托管到git以及github

    Github新建项目 1.登录github,点击右上角新建仓库 2.输入仓库名以及描述等,点击Create resposity 3.新建仓库完成后,右边有个clone or download,复制SS ...

  6. Python:通过网络爬虫实现一个简易控制台音乐播放器

    hello,大家好,我是wangzirui32,今天我们来学习如何通过网络爬虫实现一个简易控制台音乐播放器,开始学习吧! 1. 项目结构及库准备 app.py为项目入口程序,download.py为音 ...

  7. HTML5+JS实现简易的音乐播放器

    HTML5+JS实现简易的音乐播放器 播放器实现的功能 播放/暂停音乐 切换歌曲,上/下一首歌 音量最大或静音 音乐播放时间实时变化 进度条拖拽 歌曲图片切换 播放器效果展示 代码展示 html &l ...

  8. 使用python加PyQt5,利用QMediaPlayer写一个简易的音乐播放器(进度条拖动,音量改变,播放停止切换,歌曲列表))

    当你学习了python之后,总想着利用它去做些什么,无论是制作小工具还是小游戏,都是一种锻炼. 那么,利用python加上PyQt5写一个简单的音乐播放器,可能会是一个有趣的体验. 下面我会分享一下如 ...

  9. Android 简易的音乐播放器

    Android 简易的音乐播放器 效果图: 注备:由于时间问题,歌词未实现. 然后再创建一个raw的文件:如图所示 然后:xml布局为: <?xml version="1.0" ...

  10. 通过html5实现简易的音乐播放器

      <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     < ...

最新文章

  1. ug怎么画曲线_UG怎么画雨伞的曲面造型
  2. Python 学习笔记(半ZZ半自己写)
  3. Uva 11600 期望DP
  4. win7怎么修改服务器端口,win7服务器端口设置方法
  5. boost::asio
  6. mvc5 @html,如何在MVC 5中使用 HTML5 Viewer
  7. outset边框html,CSS3 border-image-outset属性怎么用?
  8. 中国智能语音行业发展趋势预测:市场规模将达159.7亿[图]
  9. [bug]使用SharpZipLib遇到中文名称乱码问题
  10. 不让登陆_梦幻西游:不让刷活动就直说,到下午3点的时候五开准时掉线
  11. linux中python如何调用matlab的数据_如何在Python中创建Gif动图?(动图数据可视化基础教学)
  12. pip离线下载安装依赖包,及github包,及常用pip源
  13. 【foobar 2000】如何在手机、电脑上播放局域网内另一台电脑上存储的音乐?FTP服务器、UPnP/DLNA协议、构建Music server、创建音乐服务器
  14. 随机微分方程学习笔记01 相对布朗运动的Ito积分
  15. android dump内存,android dump内存办法大全
  16. 电流速断保护c语言程序,[单选] 电流电压联锁速断保护与过电流保护十分相似,只是取消了()继电器。...
  17. 用category重写NSMutableArray排序,倒序
  18. 互联网赚钱:一个抖音小项目,分析下,人人都能做
  19. 硬盘格式化工具 标记坏扇区_硬盘格式化后是否还记得坏扇区?
  20. png转ico 或如何制作ico文件

热门文章

  1. xpath批量下载简历模板
  2. 反编译apk,修改登录成功
  3. 学术论文答辩通用PPT模板
  4. dedecms采集侠问题
  5. 《深入浅出WPF》——事件学习
  6. JavaScript高级程序设计闭包学习理解
  7. GHOST还原提示“A:\GHOSTERR.TXT”解决方案
  8. 【算法导论】有向图的可达矩阵
  9. Win10系统禁用驱动程序强制签名
  10. 林老师话说天南地北  我的学生在美国西雅图微软总部