HTML5音乐播放器(最新升级改造加强版)
这个是对上次的那个播放器的升级改造加强版
<div class="Home"> <div class="container clearfix"> <div class="box HomeHeader"> <div class="title"> <h1 id="sing-name">On My Own</h1> <p></p> </div> <div class="musicBox clearfix"> <div class="MusicPlayBox"> <div class="clearfix"> <div class="MusicPlayPic"><img src="img/pic/tokyo.jpg" id="MusicPhoto" class="MusicPhoto" /></div> <div class="MusicSystem"> <h3 id="sing-singer">ルシュカ </h3> <p>专辑简介:TVアニメ『東京喰種』のオリジナル・サウンドトラック。アニメ1期『東京喰種』に加え、2期『東京喰種√A』のBGMも収録。BGM全楽曲は、TVドラマ『マルモのおきて』などを手掛けたクリエイター“やまだ豊”が担当。彼のピアノから生まれるその“過激”で“琴線に触れる繊細なメロディー”が、アニメの世界観を増幅させる。《、</p> </div> </div> <div class="MusicPlayCenter"> <div class="MusicPlayButton clearfix"> <a id="Playleft" class="glyphicons glyphicons-rewind fl"></a> <a id="PLAY" class="glyphicons glyphicons-play fl"></a> <a id="Playright" class="glyphicons glyphicons-forward fl"></a> <a href="" class="glyphicons glyphicons-volume-up fl"></a> <div id="voiceSlider" class="Progress fl" style="margin:13px 0 0 10px;"> <div class="pace" style="width: 80%;"></div> <a href="javascript:void(0);" style="left: 80%;"></a> </div> </div> <div class="Progress" id="MusicProgress"> <div style="width: 0%;" class="pace"></div> <a style="left: 0%;" href="javascript:void(0);"></a> </div> <audio id="audio"></audio> </div> </div> <div class="MusicBoxWord"> <ul> <li>Darkness falls on another day</li> <li>And the light just seems so far away</li> <li>Am I here all alone</li> <li>Because it just feels so cold</li> <li>Oh~so cold</li> <li>Is there more than what meets the eyes?</li> <li>Something higher keeping me alive</li> <li>Maybe hope buried deep within</li> <li>Here's what needed to began again </li> <li>Now I must believe in something I can not see for now</li> <li>I am「on my own」</li> <li>It's my will with all my might</li> <li>To stay strong without a fight</li> <li>I'm so lost but not afraid</li> <li>I've been broken and raise again</li> <li>Don't give up, I've come this far</li> <li>Know what's right in my heart</li> <li>I'll get back to my home</li> <li>And for now I am「on my own」</li> <li>It's my will with all my might</li> <li>To stay strong without a fight</li> <li>I'm so lost but not afraid</li> <li>I've been broken and raise again</li> <li>Don't give up, I've come this far</li> <li>Know what's right in my heart</li> <li>I'll get back to my home</li> <li>And for now I am「on my own」</li> <li>I am on「on my own」</li> </ul> </div> </div> <div class="LightList"> <ul class="clearfix"> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> <li><i class="i-1"></i> <i class="i-2"></i> <i class="i-3"></i> <i class="i-4"></i> <i class="i-5"></i> <i class="i-6"></i> <i class="i-7"></i></li> </ul> </div> </div> </div> <div class="container clearfix"> <div class="Main"></div> <div class="Aside"> <div class="Wanted"><img src="img/wanted.png" width="100%" /></div> </div> </div> </div>
实现申明歌词同步这个问题我有空搞一下。。。没办法,我觉得先要把一首歌听一遍然后一个个time搞出来要疯掉了
然后下面的那个LightList我这个玩意嘛,我承认是看到LOL 4周年的页面发现他的素材不错搞来用了
css3的一个小动画
@keyframes lightAni1 { 0% { opacity: 0.5; transform: translateY(0px); } 50% { opacity: 1; transform: translateY(-50px); } 100% { opacity: 0; transform: translateY(-100px); } } @keyframes lightAni1 { 0% { opacity: 0.5; transform: translateY(0px); } 50% { opacity: 1; transform: translateY(-50px); } 100% { opacity: 0; transform: translateY(-100px); } } @keyframes lightAni2 { 0% { opacity: 0.5; transform: translate(0px, 0px); } 50% { opacity: 1; transform: translate(-10px, -50px); } 100% { opacity: 0; transform: translate(-20px, -100px); } } @keyframes lightAni2 { 0% { opacity: 0.5; transform: translate(0px, 0px); } 50% { opacity: 1; transform: translate(-10px, -50px); } 100% { opacity: 0; transform: translate(-20px, -100px); } } @keyframes lightAni3 { 0% { opacity: 0.5; transform: translate(0px, 0px); } 50% { opacity: 1; transform: translate(10px, -50px); } 100% { opacity: 0; transform: translate(20px, -100px); } } @keyframes lightAni3 { 0% { opacity: 0.5; transform: translate(0px, 0px); } 50% { opacity: 1; transform: translate(10px, -50px); } 100% { opacity: 0; transform: translate(20px, -100px); } }
好了,小东西就这点了。。。
接下来么先搞个数组列表了,把要的东西先拿出来玩玩
window.onload=function(){ var MusicList = [ { "name":"On My Own","singer":"ルシュカ" , "src":"mp3/OnMyOwn.mp3" ,"pic":"img/pic/tokyo.jpg","BigPic":"img/pic/tokyo.jpg" }, { "name":"MEMORIA","singer":"藍井エイル" , "src":"mp3/MEMORIA.mp3" ,"pic":"img/pic/tokyo.jpg","BigPic":"img/pic/tokyo.jpg" }, { "name":"OnMyOwn" ,"singer":"ルシュカ" , "src":"mp3/OnMyOwn.mp3" ,"pic":"img/pic/tokyo.jpg","BigPic":"img/pic/tokyo.jpg" }, ];
然后么设置了点东西
var player = { nowIndex: 0, //索引初始化 PlayButton: $("#PLAY"), //播放按钮 cover: $("#MusicPhoto"), //封面图 HomeBG: $(".HomeHeader"),//背景图 SongWord: $(".MusicBoxWord"),//歌词 state: 0, // 0-暂停 1-播放 audio: $("#audio").get(0),
绑定了点东西
bind: function () { //绑定按钮 //播放或暂停 var obj = this; this.PlayButton.click(function () { obj.changeState(obj.state ? 0 : 1); }); //设置声音 $("#voiceSlider").click(function (ex) { var percent = (ex.clientX - $(this).offset().left) / $(this).width(); obj.setVoice(percent); }); obj.setVoice(1.0); //设置进度 $("#MusicProgress").click(function (ex) { var percent = (ex.clientX - $(this).offset().left) / $(this).width(); obj.setProgress(percent, false); }); //上一首 $("#Playleft").click(function () { obj.nowIndex--; if (obj.nowIndex < 0) obj.nowIndex = obj.list.length - 1; obj.playSing(obj.nowIndex); }); //下一首 $("#Playright").click(function () { obj.nowIndex++; if (obj.nowIndex >= obj.list.length) obj.nowIndex = 0; obj.playSing(obj.nowIndex); player.audio.play(); }); //绑定事件 - 播放时间改变 this.audio.ontimeupdate = function () { obj.timeChange(); } //播放结束 this.audio.onended = function () { obj.singEnd(); } //加载第一项 this.loadSing(this.nowIndex); },
最后么。。。大家还是自己看demo把
额,写上这一段的时候主要还是不明白,好多点反对是对我的随笔不满还是对我随笔质量的不满。。实际上我更多的把这个博客当成个人动态玩的。。。所以还是比较随意的。。。当然如果觉得写得有问题可以在下方评论写出改进建议。。。我会虚心接受,顺便可以知道自己的不足点。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库