15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 手把手教你用HTML/CSS/JS写一个属于自己的音乐播放器

手把手教你用HTML/CSS/JS写一个属于自己的音乐播放器

时间:2023-07-22 09:24:01 | 来源:网站运营

时间:2023-07-22 09:24:01 来源:网站运营

手把手教你用HTML/CSS/JS写一个属于自己的音乐播放器:温馨提示:阅读本篇文章需要一定的HTML/CSS/JS基础,没有应该也能看(看得看不懂就不知道了)

本文仅提供思路的哦(*^▽^*),思路也很详细哦

哈哈,突然诈尸没想到吧。

中考也完了,前几天闲的没事写了一个音乐播放器,趁着闲暇时期给大家写一写制作过程和制作方法。

其实都是基本的HTML/CSS/JS,由于我代码写的较丑(不是谦虚,是真的丑),就不展示了,有需要可以私信。

这里只对一些较难的点稍作讲解

先来几张图片吧:

右边歌词随着歌曲变化而变化
能实现暂停/播放、上下首切换等基本功能

行了,那咱们开始:

首先,梳理一下我们要实现哪些功能:
1.对应显示歌曲列表和歌词
2.单击播放|暂停、上下首时实现对应功能,歌词也要对应改变,上一首歌曲播完后自动切换下一首(核心)
3.让标题,各部分,结尾显示在相应的地方
4.背景图片根据屏幕大小等比例缩放显示
5.显示歌曲播放进度条,单击进度条某一位置时,歌曲就播到此位置 //TODO
在码代码之前先整一下文件夹安排

我是这样放文件夹的:

HTML在文件夹的根目录下,其余(CSS、JS)在对应子文件夹下
那么HTML中的代码框架就是这样:

<!DOCTYPE html><html> <head> <title>网页标题</title> <link rel="stylesheet" type="text/css" href="css/css文件.css"> </head> <body> <!--功能实现--> <script src="js/js文件.js" type="text/javascript"></script> </body></html>下面咱们一个一个实现相应功能。




壹、对应显示歌曲列表,歌词和按钮

这个就很简单了,只需要<h2><p><img>等等标签组合,配上几个<div>

再加上一些换行符(<br>),空格(&nbsp;)等等

再稍用CSS稍加修饰(加边框,加滚动条)就好了。

边框我用的是:

color: white; -webkit-text-stroke: 2px black;border-color: bisque; /*陶坯黃*/border-width: 10px;border-radius: 5%;border-style: ridge; 滚动条就更简单了,只需要

overflow-y:scroll;overflow-x:hidden;下面来进行第二步

贰、单击播放|暂停、上下首时实现对应功能,歌词也要对应改变,上一首歌曲播完后自动切换下一首 (核心)


一、单击歌曲名称时,播放对应歌曲,显示对应歌词

由于我们要实现单击歌曲名称显示对应歌词,这时JS就派上用场了

所以前面的还得改一改,先将歌曲弄成一个list,再把几首歌的歌词弄成一个list,再创建一个 i 用来记录当前播放歌曲

类似这样:

var song_list=["song1","song2","song3"...];var lyrics_list=["lyrics1","lyrics2","lyrics3"...];var i = 0; //初始默认第一首歌曲温馨提示:歌词里面需要加<br>来实现换行哦

然后在HTML中,我们把歌曲加上一个链接<a>,以实现单击时运行JS中的函数

这里先拿Fire这首歌举例,设Fire是第一首歌,在song_list中的下标就为0,即i=0。

HTML中就应该这样写:

<a href="#" onclick="fire()">Fire &nbsp;&nbsp;&nbsp;-Gavin DeGraw</a>然后在JS中,创建一个fire()函数,实现单击时改变歌词,播放歌曲

在这里我定义了一个Filepath1和Filepath2,一个为./music/,另一个为.mp3

这样在整文件时,文件路径就直接是FilePath1 + song_list[i] + FilePath2了(i会变化)

播放的话就用一个<audio id="music"></audio>

然后JS中,定义全局变量obj = document.getElementById("audio");

前面的歌词就不要了,直接用一个<div>+CSS定位

<div>中再将id设成lyrics

然后fire()函数就可以这样写:

function fire(){ i=0; var FilePath=FilePath1+song_list[i]+FilePath2; obj.setAttribute('src',FilePath); //这里实现播放音乐 document.getElementById("lyrics").innerHTML=lyrics_list[i];}至此,第一小步完成


二、单击播放|暂停,上下首切换实现对应功能,改变对应歌词,改变对应图片

这就用到前面的<img>标签了,实现单击时运行next()/previous()函数,可以用<div>框起来

当然还有一个播放暂停键,实现单击时改变图片,停止/播放音乐,用id控制

<img src="./image/next.png" onmousedown="next()" alt="next"><img src="./image/stop.png" onmousedown="play()" alt="user" id="musicImg"><img src="./image/previous.png" onmousedown="previous()" alt="previous">基本原来就是:当单击图片时,如果音乐正在播放,那么暂停;如果暂停,那么播放

别忘了改变图片:stop改为playing,playing改为stop

function play() { if (obj.paused) { //如果暂停 obj.play(); //播放音乐 document.getElementById('musicImg').src="./image/playing.png"; //改变图片 }else{ //如果播放(如果不是暂停) audio.pause(); //暂停音乐 //audio.currentTime = 0; 这句可以让音乐从头播放 document.getElementById('musicImg').src="./image/stop.png"; //改变图片 }}这样play()函数就基本完成了

那么JS中的next()函数就需要先判断这时的 i 是否小于song_list的长度

如果是,则 i+=1;实现下一首

如果不是,则 i=0;从头播放

所以其实就是将 i 变一个数,其余跟fire()函数中的一样

我是这么写的:

function next(){ if(i<2){ //这里我为了省事就直接写了2,也就是三首 i+=1; } else{ i=0; } //后面一样 var FilePath=FilePath1+song_list[i]+FilePath2; obj.setAttribute('src',FilePath); document.getElementById('musicImg').src="./image/playing.png"; //别忘了改变图片哦 document.getElementById("lyrics").innerHTML=lyrics_list[i];}previous()也一样,这里就不再细说了


三、上一首播完自动播放下一首

这就需要将<audio>稍稍变动一下了,在<audio>中加一个onended="next()"其实就可以

也就是字面意思,结束了,执行前面写过的next()函数

至此,最难部分结束

叁、让标题,各部分,结尾显示在相应的地方

最难部分结束了,剩下的都很简单了

只需要用class和id,再在CSS中对应放置位置就行了,例如:

h2.lyrics{ position:relative; left:68%; top: 30%;}等等等等

肆、背景图片根据屏幕大小等比例缩放显示

最后一步是因为我换新电脑了,然后原来的背景图片显示不正常了才想出来的

在网上找的解决方法:

<body background="背景图片路径" style="background-repeat:no-repeat;background-size:100% 100%;background-attachment: fixed;"></body>挺管用,就直接拿了用了

伍、TODO

剩下的就可以发挥想象了,加个进度条,优化一下程序,将一些相似的合并为一个函数...

这就该阅历丰富的有经验的帅气的(?)各位来完成了

结语:

也没啥可说的,写这个音乐播放器的起因其实就是酷狗VIP听不了,启动速度慢等诸多因素

顺便也是用来练手的小项目,整个项目一共就250+行

写这篇文章呢,也是为了加深印象吧,也是缓解一下中考带来的紧张感







我是江晓锦翁,喜欢这篇文章别忘了点赞收藏,可以的话关注一下,谢谢大家!

---2021年6月29日

---By 江晓锦翁

关键词:音乐,把手

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭