文章目录

  • 源码
  • 钢琴小游戏
  • 一、代码
    • html代码
    • css代码
  • 实现思路
  • 总代码

源码

链接:https://pan.baidu.com/s/1J12cKovz5zx4BxNqpgWXNA
提取码:ug8t
提取码:pvy7

钢琴小游戏


该游戏玩法为:点击中间的按钮,歌曲转盘开始滚动,随即抽到一首歌,抽到的歌曲弹出歌单,点击歌单,歌单会消失,可以继续抽歌曲,底部的黑白钢琴可以弹奏音乐

一、代码

html代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./gangqinshi.css">
</head>
<body>
<div class="bg"><img src="./img/bg1.jpg" alt=""><div class="music_list"><div class="playlist1 music">世上只有</div><div class="playlist2 music">两只老虎</div><div class="playlist3 music">小星星</div><div class="playlist4 music">找朋友</div><div class="playlist5 music">新年好</div><div class="playlist6 music">粉刷匠</div><div class="playlist7 music">轨迹</div><div class="playlist8 music">青花瓷</div><div class="playlist9 music" id="start_btn"></div></div><div class="gedan"><ul><li class="img"><img src="./img/世上只有.png" alt=""></li><li class="img"><img src="./img/两只老虎.png" alt=""></li><li class="img"><img src="./img/小星星.png" alt=""></li><li class="img"><img src="./img/找朋友.png" alt=""></li><li class="img"><img src="./img/新年好.png" alt=""></li><li class="img"><img src="./img/粉刷匠.png" alt=""></li><li class="img"><img src="./img/轨迹.png" alt=""></li><li class="img"><img src="./img/青花瓷.png" alt=""></li></ul></div><div class="piano"><div class="keys"><ul><li class="Play">do<audio src="./music/1do.mp3" ></audio></li><li class="Play">re<audio src="./music/2re.mp3"></audio></li><li class="Play">mi<audio src="./music/3mi.mp3"></audio></li><li class="Play">fa<audio src="./music/4fa.mp3"></audio></li><li class="Play">sol<audio src="./music/5so.mp3"></audio></li><li class="Play">la<audio src="./music/6la.mp3"></audio></li><li class="Play">si<audio src="./music/7si.mp3"></audio></li><li class="Play">do<audio src="./music/8do.mp3"></audio></li></ul><span class="heikuai1"></span><span class="heikuai2"></span><span class="heikuai3"></span><span class="heikuai4"></span><span class="heikuai5"></span></div></div>
</div>
<button id="stop_btn">停止</button>
</body>
<script>var start_btn=document.getElementById("start_btn");var music=document.getElementsByClassName("music");//开始转圈start_btn.onclick=function(){//开始转圈timer=setInterval(start,300);}var i=0;var gedan_list=document.getElementsByClassName("img");function start(){//随机数var n=Math.round(Math.random()*10);i++;if(i==8){i = 0;}for(var j=0;j<music.length;j++){music[j].style.boxShadow="none";}if(i==n){gedan_list[i].style.display="block";clearInterval(timer);}music[i].style.boxShadow="2px 5px 10px 5px #000";console.log(i,n);} for(var w=0;w<gedan_list.length;w++){gedan_list[w].onclick=function(){this.style.display="none";}}// 停止转圈var stop_btn=document.getElementById("stop_btn");stop_btn.onclick=function(){clearInterval(timer);}//音乐播放暂停var mp3=document.getElementsByTagName("audio");var Play=document.getElementsByClassName("Play");for(var m=0;m<Play.length;m++){Play[m].onclick=function(){for(var k=0;k<Play.length;k++){Play[k].style.boxShadow="0 7px 8px #000";}this.style.boxShadow="none";this.childNodes[1].play();console.log(this.childNodes[1]);}}</script>
</html>

css代码

*{padding: 0;margin: 0;}
.bg{position: relative;width: 100%;height: 100%;}
.bg>img{width: 100%;height: 100%;z-index: -10;
}
.music_list{position: absolute;left:50%;transform: translateX(-50%);top:50px;width: 340px;height: 340px;background-color: #ccc;}
/* .playlist1{
} */
.music{/* float: left; */position: absolute;width: 100px;height: 100px;background: url("./img/1.png")no-repeat;background-size: 100% 100%;line-height: 100px;text-align: center;font-size: 20px;color: #fff;}
.playlist1{left: 0;top: 0;
}
.playlist2{left: 120px;top: 0;
}
.playlist3{left: 240px;top: 0;
}
.playlist4{right: 0;top: 120px;
}
.playlist5{right: 0;top: 240px;
}
.playlist6{bottom: 0;left: 120px;
}
.playlist7{left: 0;bottom: 0;
}
.playlist8{left: 0px;top:120px;
}
.playlist9{left: 120px;top:120px;
}
#start_btn{background: url("./img/2.jpg");background-size: 100% 100%;
}.piano{position: absolute;
left: 50%;
transform: translateX(-50%);
top: 460px;
width: 640px;
height: 300px;
background-color: #fff;
border:1px solid #000;
}
li{list-style: none;
}
.keys>ul>li{float: left;width: 80px;height: 300px;box-sizing: border-box;border:1px solid #000;color:#000;font-size: 16px;font-weight: 700;padding-left: 35px;/* background-color: pink; */
}
.keys>span{position: absolute;width: 40px;height: 150px;background-color: #000;
}
.heikuai1{left: 60px;
}
.heikuai2{left: 140px;
}
.heikuai3{left: 300px;
}
.heikuai4{left: 380px;
}
.heikuai5{left: 460px;
}
.gedan>ul>li{display: none;
}
.gedan>ul>li>img{width: 700px;height: 550;position: absolute;left: 50%;top:50px;transform: translateX(-50%);/* display: none; */}
.Play{box-shadow: 0 7px 8px #000;
}

实现思路

点击play抽歌曲出现歌单: 设置li为九个盒子,ul为相对定位,li设置宽高100,使用绝对定位,js中设置定时器, 获取li标签,然后给获取到的数组标签设置定时器,轮到的下标i设置阴影boxshadow

i++;
if(i==8){i = 0;
}
music[i].style.boxShadow="2px 5px 10px 5px #000";

使用随机函数random获取随机数n,当每次轮到一个i就随机一个数n,当n等于i时,清除定时器,并且将对应的歌单显示出来

//随机数
var n=Math.round(Math.random()*10);
if(i==n){gedan_list[i].style.display="block";clearInterval(timer);}


点击歌单后,歌单会消失

for(var w=0;w<gedan_list.length;w++){gedan_list[w].onclick=function(){this.style.display="none";}}

实现钢琴弹奏效果
设置八个li标签,每个标签放置一个audio标签,弹奏时,给点击到的li标签的孩子节点audio添加play属性,并且点击到的li标签阴影消失

//音乐播放暂停var mp3=document.getElementsByTagName("audio");var Play=document.getElementsByClassName("Play");for(var m=0;m<Play.length;m++){Play[m].onclick=function(){for(var k=0;k<Play.length;k++){Play[k].style.boxShadow="0 7px 8px #000";}this.style.boxShadow="none";this.childNodes[1].play();console.log(this.childNodes[1]);}}

以上就是趣味钢琴家的实现思路

总代码

html+javascript

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./gangqinshi.css">
</head>
<body>
<div class="bg"><img src="./img/bg1.jpg" alt=""><div class="music_list"><div class="playlist1 music">世上只有</div><div class="playlist2 music">两只老虎</div><div class="playlist3 music">小星星</div><div class="playlist4 music">找朋友</div><div class="playlist5 music">新年好</div><div class="playlist6 music">粉刷匠</div><div class="playlist7 music">轨迹</div><div class="playlist8 music">青花瓷</div><div class="playlist9 music" id="start_btn"></div></div><div class="gedan"><ul><li class="img"><img src="./img/世上只有.png" alt=""></li><li class="img"><img src="./img/两只老虎.png" alt=""></li><li class="img"><img src="./img/小星星.png" alt=""></li><li class="img"><img src="./img/找朋友.png" alt=""></li><li class="img"><img src="./img/新年好.png" alt=""></li><li class="img"><img src="./img/粉刷匠.png" alt=""></li><li class="img"><img src="./img/轨迹.png" alt=""></li><li class="img"><img src="./img/青花瓷.png" alt=""></li></ul></div><div class="piano"><div class="keys"><ul><li class="Play">do<audio src="./music/1do.mp3" ></audio></li><li class="Play">re<audio src="./music/2re.mp3"></audio></li><li class="Play">mi<audio src="./music/3mi.mp3"></audio></li><li class="Play">fa<audio src="./music/4fa.mp3"></audio></li><li class="Play">sol<audio src="./music/5so.mp3"></audio></li><li class="Play">la<audio src="./music/6la.mp3"></audio></li><li class="Play">si<audio src="./music/7si.mp3"></audio></li><li class="Play">do<audio src="./music/8do.mp3"></audio></li></ul><span class="heikuai1"></span><span class="heikuai2"></span><span class="heikuai3"></span><span class="heikuai4"></span><span class="heikuai5"></span></div></div>
</div>
<button id="stop_btn">停止</button>
</body>
<script>var start_btn=document.getElementById("start_btn");var music=document.getElementsByClassName("music");//开始转圈start_btn.onclick=function(){//开始转圈timer=setInterval(start,300);}var i=0;var gedan_list=document.getElementsByClassName("img");function start(){//随机数var n=Math.round(Math.random()*10);i++;if(i==8){i = 0;}for(var j=0;j<music.length;j++){music[j].style.boxShadow="none";}if(i==n){gedan_list[i].style.display="block";clearInterval(timer);}music[i].style.boxShadow="2px 5px 10px 5px #000";console.log(i,n);} for(var w=0;w<gedan_list.length;w++){gedan_list[w].onclick=function(){this.style.display="none";}}// 停止转圈var stop_btn=document.getElementById("stop_btn");stop_btn.onclick=function(){clearInterval(timer);}//音乐播放暂停var mp3=document.getElementsByTagName("audio");var Play=document.getElementsByClassName("Play");for(var m=0;m<Play.length;m++){Play[m].onclick=function(){for(var k=0;k<Play.length;k++){Play[k].style.boxShadow="0 7px 8px #000";}this.style.boxShadow="none";this.childNodes[1].play();console.log(this.childNodes[1]);}}
</script>
</html>

css代码

*{padding: 0;margin: 0;}
.bg{position: relative;width: 100%;height: 100%;}
.bg>img{width: 100%;height: 100%;z-index: -10;
}
.music_list{position: absolute;left:50%;transform: translateX(-50%);top:50px;width: 340px;height: 340px;background-color: #ccc;}
/* .playlist1{
} */
.music{/* float: left; */position: absolute;width: 100px;height: 100px;background: url("./img/1.png")no-repeat;background-size: 100% 100%;line-height: 100px;text-align: center;font-size: 20px;color: #fff;}
.playlist1{left: 0;top: 0;
}
.playlist2{left: 120px;top: 0;
}
.playlist3{left: 240px;top: 0;
}
.playlist4{right: 0;top: 120px;
}
.playlist5{right: 0;top: 240px;
}
.playlist6{bottom: 0;left: 120px;
}
.playlist7{left: 0;bottom: 0;
}
.playlist8{left: 0px;top:120px;
}
.playlist9{left: 120px;top:120px;
}
#start_btn{background: url("./img/2.jpg");background-size: 100% 100%;
}.piano{position: absolute;
left: 50%;
transform: translateX(-50%);
top: 460px;
width: 640px;
height: 300px;
background-color: #fff;
border:1px solid #000;
}
li{list-style: none;
}
.keys>ul>li{float: left;width: 80px;height: 300px;box-sizing: border-box;border:1px solid #000;color:#000;font-size: 16px;font-weight: 700;padding-left: 35px;/* background-color: pink; */
}
.keys>span{position: absolute;width: 40px;height: 150px;background-color: #000;
}
.heikuai1{left: 60px;
}
.heikuai2{left: 140px;
}
.heikuai3{left: 300px;
}
.heikuai4{left: 380px;
}
.heikuai5{left: 460px;
}
.gedan>ul>li{display: none;
}
.gedan>ul>li>img{width: 700px;height: 550;position: absolute;left: 50%;top:50px;transform: translateX(-50%);/* display: none; */}
.Play{box-shadow: 0 7px 8px #000;
}

链接:https://pan.baidu.com/s/1J12cKovz5zx4BxNqpgWXNA
提取码:ug8t
码字不易,喜欢就点个赞吧!

javascript趣味钢琴小游戏(附源码)js+css+html相关推荐

  1. html实现扫雷小游戏(附源码)

    文章目录 实现功能 1.扫雷设计 1.1 主界面 1.2 扫雷难度 1.3 附带功能 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blo ...

  2. 【博主推荐】html好看的拼图小游戏(附源码)

    拼图目录 html好看的拼图小游戏 1.拼图效果示意图 1.1 第一级 九宫格拼图 1.2 第二级 十六宫格拼图 1.3 第三级 三十二宫格拼图 14 第三级 八十一宫格拼图 2.图片切图说明 3.实 ...

  3. 【Python游戏】Python基于pygame实现的人机大战的斗兽棋小游戏 | 附源码

    前言 有粉丝说要我出一期Python版本的斗兽棋,今天宠粉狂魔的我不就来啦!! 虽然是一个简单的小游戏,但是对于新手小伙伴来说还是有一定的小难度的哟!要是不理解都可以找到小编的哈!! 相关文件 关注小 ...

  4. 整理了30款Python小游戏附源码,五一有的玩了

    快到五一了,整理了 30 款 Python 小游戏源码分享给大家,具体内容可以点击下方视频号查看: 点击上方视频后,源码获取方式:①关注上方视频号.②点赞当前视频.③在当前视频评论区扣1 友情提示:获 ...

  5. 【Python游戏】基于化学方程式的基础上,用Python实现一个消灭泡泡小游戏 | 附源码

    前言 halo,包子们下午好 今天实现的这个小游戏呀,说实话化学不太好的小伙伴可能看起来会有点懵逼 不过不用担心,咱们今天不是来学化学的,我们是来学习Python的 所以呀,不要太担心啦,大家先好好看 ...

  6. 【Python游戏】用Python 和 Pyglet 编写一个我的世界小游戏 | 附源码

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! 需要源码的小伙伴可以在公众号回复我的世界 Pytho ...

  7. 一口气用Python写了13个小游戏 (附源码)

    大家好,今天给大家分享13个游戏源码,可以自己复现玩玩,研究下里面的编程逻辑,对学习编程(特别是初学者)应该会有很大帮助. 由于文章较长,大家记得滑到文末点个赞哈- 1.吃金币 源码分享: impor ...

  8. 【Python游戏】基于pygame实现的一个Dino Rush 恐龙宝贝冲冲冲的小游戏 | 附源码

    前言 halo,包子们晚上好 很久没有更新啦,主要是小编这边最近有点小忙 今天给大家整一个Dino Rush 恐龙宝贝冲冲冲的小游戏 还是一个比较记经典的小游戏,还记这可谷歌浏览器上没有网也能打发时间 ...

  9. 用C语言easyx库来写一个简单的翻翻乐小游戏(附源码素材)

    简明目录 写在前面 easyx库 准备工作 新建项目文件 分析 素材分析 上代码吧 地图表示 开始界面 地图初始化(打乱) 游戏过程实现 主函数的实现 测试 优化 1.游戏分数 2.游戏时间 3.nu ...

  10. 分享Python开发的13个小游戏(附源码)

    导语 哈喽哈喽~铁汁萌!愉快的周末到了天气也变好了不知道大家有没有出去玩吖!小编这几天太累了周末就宅在家里啦

最新文章

  1. 华为鸿蒙系统2.0发布了!AI人工智能大有可为!
  2. SQL Server:OA权限管理设计的实现 下
  3. hibernate中@Entity和@Table的区别
  4. ubuntu系统下安装docker并部署Springboot+mysql+redis
  5. di容器_DI容器是代码污染者
  6. h5 video全屏播放
  7. 继苏宁京东后 拼多多也宣布下调新款iPhone售价
  8. en55032最新标准下载_关于欧盟新版EMC标准EN55032的解析
  9. 伍德里奇计量经济学第六章计算机答案,伍德里奇计量经济学导论计算机习题第六章第13题c_6.13...
  10. Linux:红帽操作系统介绍
  11. GetWindowRect,GetClientRect,ScreenToClient MoveWindow SetWindowPos 用法说明
  12. 手把手 网络爬虫:用爬虫爬取贝壳房租网西安的租房信息
  13. 专利代理人资格考试怎么准备
  14. 全面解读Marshmallow
  15. AutoJs学习-变声器模板
  16. 计算机和数学专业哪个难,学计算机专业难吗 数学很差能学吗
  17. Python Loess (Lowess) smooth 曲线平滑
  18. 「维基解密」:西游记死亡人数
  19. 面试中sql调优的几种方式_面试方式
  20. MOSFET反向恢复特性总结-4

热门文章

  1. 你见过凌晨4点的洛杉矶吗?写一个简单的投篮游戏
  2. 光流与Lucas-Kanade 光流法
  3. Something about 博弈~(updating...)
  4. Android——实现Home键功能
  5. 23万字 前端HTML与CSS学习笔记总结篇(超详细)
  6. 多声道音频指南(二)—— 前世与今生
  7. 虚拟化高级应用、Win快捷键操作 、 Win+R快速调用
  8. Spring Security(3)
  9. 海康威视存储服务器915CVR设备手动配置RAID5操作手册
  10. [SCOI2009]粉刷匠 两个dp