目录
效果图很重要
列子
说明
准备材料
各个功能的实现思路
CHEN[EXO]&Punch
Always(Inst)
seaseeYoul.
-00:00
亲们喜欢的点赞吧么么哒~~~
首页 web前端 html教程 优雅特效的MP3_html/css_WEB-ITnose

优雅特效的MP3_html/css_WEB-ITnose

Jun 24, 2016 am 11:22 AM

效果图很重要

歌曲选择了最近特别火的 太阳的后裔的原声音乐6首。通过正规渠道获得了听播的权利(花20块买的,哈哈),非商业用途,个人使用应该是没事的~~~

效果图.png

列子

这里是一个栗子seaseeYoul-Audio

说明

这是一个使用html+css+js完成的网页版MP3。这个栗子实现了上一曲,下一曲,喜欢,静音,查看播放列表,点歌(单击播放列表中的歌曲进行播放)。模仿了CD的旋转这些功能,从界面设计到功能全部由个人完成。暂时已兼容除IE外所有主流浏览器。系统有问题,IE测不了。。。底部附录全部代码。

准备材料

  1. sublime text3
  2. google浏览器 chrome ,或则其他对css3支持较好的浏览器

各个功能的实现思路

特别注意与小技巧:因为要使用定时器,所以在进行定时器相关操作时一定要先清除上一个定时器,否则会混乱。使用一些隐藏的标签来保存一些属性,能使js更加简便。如存储当前播放的歌曲的id
Ⅰ:播放/暂停功能

播放功能实现了四个效果,一是音乐的播放,改变播放按钮的样式,这一点分别使用媒体标签拥有的play()方法,即:var _this=document.getElementById('audio'); _this.play(); 。改变按钮的样式则只需要改变按钮本身的class即可了。二是给CD添加一个旋转效果,这个效果则由css3来完成。使用 animation-play-state:paused/running;-webkit-animation-play-state:paused/running;来控制动画的开始与暂停,这个class的作用就是给CD添加动画的。三是倒计时,倒计时只需要获取到歌曲的总时间即可,我把所有的歌曲信息都存储到了一个数组里面,需要什么,我就从数组里面拿到即可。四是进度条,进度条同倒计时一样,使用定时器与css配合完成。核心代码如下:

music_list:[{"address":"1.mp3","lrc":"1.lrc","singer":"纯音乐","name":"Always(Inst)","time":"205"},{"address":"2.mp3","lrc":"2.lrc","singer":"T[伊莱美]","name":"Always","time":"205"},{"address":"3.mp3","lrc":"3.lrc","singer":"CHEN[EXO] & Punch","name":"Everytime","time":"189"},{"address":"4.mp3","lrc":"4.lrc","singer":"金娜英 & Mad Clown","name":"再次见到你","time":"235"},{"address":"5.mp3","lrc":"5.lrc","singer":"纯音乐","name":"再次见到你(Inst)","time":"235"},{"address":"6.mp3","lrc":"6.lrc","singer":"Lyn","name":"With you","time":"254"}]togglePlay: function(){    var _this = document.getElementById('audio');    clearInterval(timer);    if($("#play").hasClass("icon-play")){        $("#play").removeClass("icon-play").addClass("icon-pause");        $(".disc").css({"animation-play-state":"running"});         _this.play();         timer = setInterval(audio.count,1000);    }else{        $("#play").removeClass("icon-pause").addClass("icon-play");        _this.pause();        clearInterval(timer);        $(".disc").css({"animation-play-state":"paused"});    }    audio._likes();},
登录后复制
Ⅱ上一曲/下一曲

上一曲下一曲的功能本质是更改audio标签里面的src地址,当src指向一首新的歌曲的时候,那么再点击播放,播放的音乐也就切换了。这个使用jq很容易完成。其次是更新现实的歌曲信息,核心代码如下:

next:function(){    var _this = document.getElementById('audio');    var _nextMusicId = parseInt($("#musicid").val())+1;     _nextMusicId = _nextMusicId > audio.music_list.length-1? 0 :_nextMusicId;    $("#musicid").val(_nextMusicId);            var nextMusicSrc ="./music/" +audio.music_list[_nextMusicId].address;    _this.src = nextMusicSrc;    $("#play").addClass("icon-play");    $("#countdown").attr("time",audio.music_list[_nextMusicId].time);    $(".singer").html(audio.music_list[_nextMusicId].singer);    $(".music-info").html(audio.music_list[_nextMusicId].name);    audio.togglePlay();},prev:function(){    var _this = document.getElementById('audio');    var _nextMusicId = parseInt($("#musicid").val())-1;     _nextMusicId = _nextMusicId > audio.music_list.length-1? 0 :_nextMusicId;    $("#musicid").val(_nextMusicId);            var nextMusicSrc ="./music/" +audio.music_list[_nextMusicId].address;    _this.src = nextMusicSrc;    $("#play").addClass("icon-play");    $("#countdown").attr("time",audio.music_list[_nextMusicId].time);    $(".singer").html(audio.music_list[_nextMusicId].singer);    $(".music-info").html(audio.music_list[_nextMusicId].name);    audio.togglePlay();},
登录后复制
Ⅲ静音

静音很容易实现,同是使用媒体标签自带的属性,_this.muted = false;开启静音,_this.muted = true;关闭静音。【var _this = document.getElementById('audio');】

Ⅳ喜欢

喜欢也很容易实现,点击爱心,把他变为实心,颜色改为红色(更改class),红色的爱,才是真爱。哈哈哈哈~~,并且设置播放列表里面的当前这首歌曲的like(自定义的)属性为like。再次点击的时候在变回去即可。

Ⅴ查看播放列表

把装播放列表的div显示出来就可以了。什么样的方式自己决定。

Ⅵ 点歌

点歌的原理其实与上一曲/下一曲是一样的,只是上下一曲是地址加减1,而点歌是指定某一首。

Ⅶ附录

所有的代码都在这里

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>saeseeYoul-Audio</title>    <link rel="stylesheet" href="css/reset.css">    <link rel="stylesheet" href="css/font-awesome.min.css">    <link rel="stylesheet" href="css/audio.css"></head><body>    <div class="container">        <div class="info">            <span class="icon-music tit"></span>            <h3 id="CHEN-EXO-Punch">CHEN[EXO]&Punch</h3>            <h4 id="Always-Inst">Always(Inst)</h4>            <div class="disc">                <h4 id="seaseeYoul">seaseeYoul.</h4>                <div class="cd1">                    <div class="cd2"></div>                </div>            </div>            <div class="spinner" id="load">              <div class="bounce1"></div>              <div class="bounce2"></div>              <div class="bounce3"></div>            </div>        </div>        <div class="action">            <h5 id="">-00:00</h5>            <input type="hidden" value="0" id="musicid">            <audio src="./music/1.mp3" id="audio" controls="controls" preload="auto"></audio>            <span class="time"> <i id="time_ring"></i>            </span>            <ul class="action_button">                <li class="large icon-step-backward" id="prev"></li>                <li class="large icon-play" id="play"></li>                <li class="large icon-step-forward" id="next"></li>                <li class="nomal icon-volume-up" id="mute"></li>                <li class="nomal icon-heart-empty" id="likes"></li>                <li class="nomal icon-reorder" id="menu"></li>            </ul>        </div>        <ul class="list"></ul>    </div>    <script src="js/jquery.min.js"></script>    <script src="js/audio.js"></script></body></html>
登录后复制

这里是cCss代码 Css code

这里是Js代码 js code

Ⅷ其他说明

其实还有两种状态没考虑到,一是网络不好的时候,MP3歌曲没加载完成,处于等待播放的状态,这时候应该清楚定时器以及一些其他效果,等待MP3重新开始播放。二就是MP3等待结束重新开始播放,这时候应该还原到播放状态。但是我是本地测试,而且网速比较好完全没有这两个状态。。。测不了啊测不了。。。原谅我吧。。。

亲们喜欢的点赞吧么么哒~~~

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

&gt; gt;的目的是什么 元素? &gt; gt;的目的是什么 元素? Mar 21, 2025 pm 12:34 PM

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati

HTML容易为初学者学习吗? HTML容易为初学者学习吗? Apr 07, 2025 am 12:11 AM

HTML适合初学者学习,因为它简单易学且能快速看到成果。1)HTML的学习曲线平缓,易于上手。2)只需掌握基本标签即可开始创建网页。3)灵活性高,可与CSS和JavaScript结合使用。4)丰富的学习资源和现代工具支持学习过程。

&lt; datalist&gt;的目的是什么。 元素? &lt; datalist&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:33 PM

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

&lt; meter&gt;的目的是什么。 元素? &lt; meter&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:35 PM

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

视口元标签是什么?为什么对响应式设计很重要? 视口元标签是什么?为什么对响应式设计很重要? Mar 20, 2025 pm 05:56 PM

本文讨论了视口元标签,这对于移动设备上的响应式Web设计至关重要。它解释了如何正确使用确保最佳的内容缩放和用户交互,而滥用可能会导致设计和可访问性问题。

&lt; iframe&gt;的目的是什么。 标签?使用时的安全考虑是什么? &lt; iframe&gt;的目的是什么。 标签?使用时的安全考虑是什么? Mar 20, 2025 pm 06:05 PM

本文讨论了&lt; iframe&gt;将外部内容嵌入网页,其常见用途,安全风险以及诸如对象标签和API等替代方案的目的。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

HTML中起始标签的示例是什么? HTML中起始标签的示例是什么? Apr 06, 2025 am 12:04 AM

AnexampleOfAstartingTaginHtmlis,beginSaparagraph.startingTagSareEssentialInhtmlastheyInitiateEllements,defiteTheeTheErtypes,andarecrucialforsstructuringwebpages wepages webpages andConstructingthedom。

See all articles