音乐盒(前端练手项目 html css js)
2023-09-11 14:17:47 时间
大家好我是言不及行yyds
前言
你需要引入五个自己喜欢的图片和五个音乐
☀️作者简介:大家好我是言不及行yyds
🐋个人主页:言不及行yyds的CSDN博客
🎁系列专栏:【前端练手项目】
🌱每日一句:
“人生的道路都是由心来描绘的。所以,无论自己处于多么严酷的境遇之中,心头都不应为悲观的思想所萦绕。”——稻盛和夫
1.展示
音乐盒(前端练手项目)
2.代码
html代码
<div class="banner">
<ul>
<li class="m1" datasrc="音乐盒素材/1.mp3" title="不如-晨冰">
<img src="音乐盒素材/1.jpg" width="100px">
</li>
<li class="m2" datasrc="音乐盒素材/2.mp3" title="你走-晨冰">
<img src="音乐盒素材/2.jpg" width="100px">
</li>
<li class="m3" datasrc="音乐盒素材/3.mp3" title="哪里都是你-晨冰">
<img src="音乐盒素材/3.jpg" width="100px">
</li>
<li class="m4" datasrc="音乐盒素材/4.mp3" title="热爱105c的你-晨冰">
<img src="音乐盒素材/4.jpg" width="100px">
</li>
<li class="m5" datasrc="音乐盒素材/5.mp3" title="海底-晨冰">
<img src="音乐盒素材/5.jpg" width="100px">
</li>
</ul>
</div>
<div class="music">
<div class="m_img">
<img src="音乐盒素材/1.jpg" width="100px">
</div>
<div class="m_text">不如-晨冰</div>
<div class="m_btn">
<a href="#" class="m_prev" title="上一首"></a>
<a href="#" class="m_play" title="播放"></a>
<a href="#" class="m_next" title="下一首"></a>
</div>
<div class="m_close">
</div>
<audio src="音乐盒素材/1.mp3" class="m_mp3"></audio>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<script src="音乐盒.js"></script>
css代码
body{
background:url("./音乐盒素材/1.jpeg") no-repeat;
background-size: cover;
}
.banner{
background: url("./音乐盒素材/9.jpg") no-repeat;
width:960px;
height:300px;
margin:80px;
opacity: 0.8;
box-shadow: 10px 15px 15px 1px #d8dea0;
position: relative;
}
.banner ul li{
list-style:none;
display:inline-block;
position:absolute;
}
.banner ul li img{
border-radius:50%;
cursor:pointer;
}
.m1{top:20px;left:60px}
.m2{top:60px;left:200px}
.m3{top:100px;left:400px}
.m4{top:80px;left:600px}
.m5{top:50px;left:800px}
@keyframes img_rotate {
from{
transform: rotate(0deg);
}
to{
transform: rotate(360deg);
}
}
.banner .img_rotate{
animation: img_rotate 2s infinite linear;
}
.music{
width:650px;
height:120px;
position:fixed;
left:0;
bottom:150px;
background-color: black;
opacity:0.8;
box-shadow: 10px 15px 15px 1px black;
}
.music .m_img{
margin-top:5px;
margin-left:10px;
float:left;
}
.music .m_text{
float:left;
color:white;
font-size:20px;
font-weight:bold;
margin-top:40px;
margin-left:20px;
}
.music .m_btn{
float:left;
position:absolute;
left:300px;
}
.music .m_btn a{
float:left;
width:60px;
height:60px;
background: url("./音乐盒素材/play.png");
margin-top:30px;
margin-left:20px;
}
.music .m_btn .m_prev{
background-position: -103px -20px;
}
.music .m_btn .m_play{
background-position: -17px -22px;
}
.music .m_btn .m_next{
background-position: -189px -20px;
}
.music .m_close{
float:right;
width:25px;
height:120px;
margin-top:2px;
cursor: pointer;
background-color:burlywood;
opacity:0.7;
}
.music .m-btn .m_pause{
background-position:-102px -182px;
}
/*
编写js时隐藏或显示播放器时编写的代码
*/
js代码
/*分析:
1.获取li的Index()
2.更换背景图片
3.更换播放器图片盒文本
4.播放按钮及title更换为暂停
5.图片旋转
6.播放音乐
其他:
1.暂停/播放
2.上一首/下一首
3.播放器的显示与隐藏
*/
//收集数剧
var index=0;
var li=$(".banner ul li");
var img=$(".music .m_img img");
var text=$(".music .m_text");
var prev=$(".music .m_btn .m_prev");
var play=$(".music .m_btn .m_play");
var next=$(".music .m_btn .m_next");
var mp3=$(".music .m_mp3");
var flag=false;//歌曲是否播放
var close=true;//播放器是否显示
//获取点击的li索引
li.click(function(){
//获取当前索引
index=$(this).index();
show();
});
//封装一个函数 方便上一首/下一首
function show(){
//更换背景图片 需要+1,图片第一张索引为0
change_bg(index+1);//更换背景图片
change_img_text(index+1);//更换播放器图片盒文本
change_btn_title()
img_rotate()
play_mp3()
};
function change_bg(idx){
$("body").css({
"background":"url(./音乐盒素材/"+idx+".jpg) no-repeat",
"background-size":"cover"
});
}
function change_img_text(idx){
img.attr("src","./音乐盒素材/"+idx+".jpg");//更换播放器图片
text.html(li.eq(index).attr("title"));//获取li的title属性然后更换文本
}
//播放按钮及title更换为暂停
function change_btn_title(){
play.removeClass("m_play");
play.addClass("m_pause");
play.attr("title","暂停");
}
function img_rotate(){
li.children().removeClass("img_rotate");
li.eq(index).children().addClass("img_rotate");
}
function play_mp3(){
mp3.attr("src",li.eq(index).attr("datasrc"));
mp3.get(0).play();//播放歌曲
//修改歌曲是否播放
flag=true;
}
//暂停/播放歌曲
play.click(function(){
/*
如果歌曲播放
1.暂停歌曲
2.图片旋转暂停
3.暂停按钮更换为播放
4.title更换为播放
*/
if(flag){
mp3.get(0).pause();
li.eq(index).children().removeClass("img_rotate");
play.removeClass("m_pause").addClass("m_play").attr("tilte","播放")//涨停按钮转换,title更换
}else{
mp3.get(0).play();
li.eq(index).children().addClass("img_rotate");
play.removeClass("m_play").addClass("m_pause").attr("tilte","暂停")//涨停按钮转换,title更换
flag=true;
change_bg(index+1);
}
})
//上一首
prev.click(function(){
index--;
if(index<0){
index=li.length-1;
}
show();
})
//下一首
next.click(function(){
index++;
if(li.length-1<index){
index=0;
}
show();
})
//隐藏/显示
$("m_close").click(function(){
if(close){
$(".music").animate({"left":"550px"},800);
close=false;
}else{
$(this).removeClass("m_open");
$(".music").animate({"left":"opx"},800);
close=true;
}
})
imate({"left":"550px"},800);
close=false;
}else{
$(this).removeClass("m_open");
$(".music").animate({"left":"opx"},800);
close=true;
}
})
总结:
1.搭建静态页面
2.绑定事件,点击切换按钮
3.点击事件,点击换音乐和图片
4.实时更换背景图片
本期就结束了,如果对您有帮助,点赞+评论支持一下博主再走吧 还没有关注言不及行yyds的朋友,点个关注每天学一点前端知识
相关文章
- js 生成4位随机数及Js知识汇总
- 利用forever在Linux上实现Node.js项目自启动
- 在vs2017中创建Node.js项目
- js - 正斜杆网址转换
- Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"@"
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法
- 【Js】前端使用xlsx.full.min.js读取和导出excel表格数据
- 【小程序】js单击事件中调用wxml中传递的数据(图文+完整示例)
- egg 项目实战(五)Egg.js 中的Service服务
- Vue - 引入集成 Tinymce 富文本编辑器(详细步骤及运行Demo),在 Vue.js 项目中使用富文本插件详细教程,附带超级详细的注释说明
- Vue - 超详细最新 WangEditor V5 富文本编辑器安装引入及使用教程(内含在 Nuxt.js 项目中引入的解决方案)
- JS的注意点
- JS模式:jq中简单的模式--》采摘自js设计(tomxu_version)
- 618快到了送上自制前端小项目(html css js)
- 5个前端练手项目(html css js canvas)
- SwiftUI 前后端完整项目大全 之 网上商店App基于Node.js、Express和Vue构建 (项目含源码)
- 使用JS对form的内容验证失败后阻止提交
- JS教程之Electron.js设计强大的多平台桌面应用程序的好工具
- React脚手架工程化项目里ServiceWorker.js文件作用
- js 给json添加新的字段,或者添加一组数据,在JS数组指定位置删除、插入、替换元素
- JS实现文本框和文本域获取焦点focus()时,光标在本文的末尾
- 微信小程序表单校验WxValidate.js使用
- 【ArkUI】【HarmonyOS】鸿蒙ets项目如何npm方式引入第三方js类库
- js中对数组的操作-------Day49
- 使用JS快速读取TXT文件
- 云服务器 ECS 建站教程:部署Node.js项目(CentOS)