1. [代码][JavaScript]代码     
    
(function($){
    jQuery.fn.extend({
        "initAudio" : function(){
            var myAudio = $("audio",this)[0];
            var $sourceList = $("source",this);
            var currentSrcIndex = 0;
            var currentSr = "";
 
            /*添加播放器UI组件*/
            this.append(
                '<div class="music_info clearfix">\
                   
<div class="cd_holder"><span
class="stick"></span><div
class="cd"></div></div>\
                    <div class="meta_data">\
                        <span class="title"></span>\
                        <div class="rating">\
                            <div class="starbar">\
                                <ul class="current-rating" data-score="85">\
                                    <li class="star5"></li>\
                                    <li class="star4"></li>\
                                    <li class="star3"></li>\
                                    <li class="star2"></li>\
                                    <li class="star1"></li>\
                                </ul>\
                            </div>\
                        </div>\
                        <div class="volume_control">\
                            <a class="decrease">a</a>\
                            <span class="base_bar">\
                                <span class="progress_bar"></span>\
                                <a class="slider"></a>\
                            </span>\
                            <a class="increase">b</a>\
                        </div>\
                    </div>\
                </div>\
                <ul class="music_list"></ul>\
                <div class="controls">\
                    <div class="play_controls">\
                        <a class="btn_previous">e</a>\
                        <a class="btn_play">c</a>\
                        <a class="btn_next">d</a>\
                    </div>\
                    <div class="time_line">\
                        <span class="passed_time">0:00</span>\
                        <span class="base_bar">\
                            <span class="progress_bar"></span>\
                        </span>\
                        <span class="total_time">0:00</span>\
                    </div>\
                </div>'
            );
            /*为播放列表添加歌曲信息*/
            for (var i = 0; i < $sourceList.length; i++) {
                $(".music_list").append("<li>" + $sourceList[i].title + "</li>");
            };
            /*调控音量方法*/
            HTMLAudioElement.prototype.changeVolumeTo = function(volume){
                this.volume = volume;
                $(".volume_control .progress_bar").css("width",volume*100 + "%");
                $(".volume_control .slider").css("left",volume*100 - 7 + "px");
            }
            /*为播放器添加事件监听*/
            /*播放、暂停、上一首、下一首功能实现*/
            $(".btn_play").click(function(){
                if (myAudio.paused) {
                    myAudio.play();
                } else {
                    myAudio.pause();
                }
            });
            $(".btn_next").click(function(){
                ++currentSrcIndex > $sourceList.length - 1 && (currentSrcIndex = 0);
                currentSrc = $("#myAudio source").eq(currentSrcIndex).prop("src");
                myAudio.src = currentSrc;
                myAudio.play();
            });
            $(".btn_previous").click(function(){
                --currentSrcIndex < 0 && (currentSrcIndex = 0);
                currentSrc = $("#myAudio source").eq(currentSrcIndex).prop("src");
                myAudio.src = currentSrc;
                myAudio.play();
            });
            /*音量调控功能实现*/
            $(".volume_control .decrease").click(function() {
                var volume = myAudio.volume - 0.1;
                volume < 0 && (volume = 0);
                myAudio.changeVolumeTo(volume);
            });
            $(".volume_control .increase").click(function() {
                var volume = myAudio.volume + 0.1;
                volume > 1 && (volume = 1);
                myAudio.changeVolumeTo(volume);
            });
            $(".volume_control .base_bar").mousedown(function(ev){
                var posX = ev.clientX;
                var targetLeft = $(this).offset().left;
                var volume = (posX - targetLeft)/100;
                volume > 1 && (volume = 1);
                volume < 0 && (volume = 0);
                myAudio.changeVolumeTo(volume);
            });
            $(".volume_control .slider").mousedown(starDrag = function(ev) {
                ev.preventDefault();
                var origLeft = $(this).position().left;      /*滑块初始位置*/
                var origX = ev.clientX;                     /*鼠标初始位置*/
                var target = this;
                var progress_bar = $(".volume_control .progress_bar")[0];
                $(document).mousemove(doDrag = function(ev){
                    ev.preventDefault();
                    var moveX = ev.clientX - origX;        /*计算鼠标移动的距离*/
                    var curLeft = origLeft + moveX;         /*用鼠标移动的距离表示滑块的移动距离*/
                    (curLeft < -7) && (curLeft = -7);
                    (curLeft > 93) && (curLeft = 93);
                    target.style.left = curLeft + "px";
                    progress_bar.style.width = curLeft + 7 + "%";
                    myAudio.changeVolumeTo((curLeft + 7)/100);
                });
                $(document).mouseup(stopDrag = function(){
                    $(document).unbind("mousemove",doDrag);
                    $(document).unbind("mouseup",stopDrag);
                });
            });
            /*音频进度条调控功能实现*/
            $(".time_line .base_bar").mousedown(function(ev){
                var posX = ev.clientX;
                var targetLeft = $(this).offset().left;
                var percentage = (posX - targetLeft)/140 * 100;
                myAudio.currentTime = myAudio.duration * percentage / 100;
            });
            $(".music_info .cd").click(function(){
                $(".music_list").slideToggle(600);
            });
            $(".music_list").click(function(ev){
                var index = $(ev.target).index();
                currentSrcIndex = index;
                currentSrc = $("#myAudio source:eq(" + currentSrcIndex + ")").prop("src");
                myAudio.src = currentSrc;
                myAudio.play();
 
            });
            /*audio元素事件绑定*/
            $(myAudio).bind("loadedmetadata",function(){
                var totalTime = formatTime(myAudio.duration);
                var title = $("#myAudio source:eq(" + currentSrcIndex + ")").attr("title");
                $(".time_line .total_time").text(totalTime);
                $(".meta_data .title").text(title);
            });
            $(myAudio).bind("timeupdate",function(){
                var duration = this.duration;
                var curTime = this.currentTime;
                var percentage = curTime/duration * 100;
                $(".time_line .progress_bar").css("width",percentage + "%");
 
                var passedTime = formatTime(curTime);
                $(".time_line .passed_time").text(passedTime);                     
            });http://www.huiyi8.com/hunsha/chuangyi/
            $(myAudio).bind("play",function(){
                $(".btn_play").text("h");
                $(".music_list li").eq(currentSrcIndex).addClass("active")
                .siblings().removeClass("active");
                $(".music_info .cd").addClass("rotate");
                $(".cd_holder .stick").addClass("play");
            });创意婚纱照片
            $(myAudio).bind("pause",function(){
                $(".btn_play").text("c");
                $(".music_info .cd").removeClass("rotate");
                $(".cd_holder .stick").removeClass("play");
            });
            $(myAudio).bind("ended",function(){
                $(".btn_next").triggerHandler("click");
            });
            $(myAudio).bind("progress",function(){
                if (myAudio.buffered.length == 1) {
                  // only one range
                  if (myAudio.buffered.start(0) == 0) {
                    // The one range starts at the beginning and ends at
                    // the end of the video, so the whole thing is loaded
                    var buffered = myAudio.buffered.end(0);
                    var percentage = buffered/myAudio.duration * 100;
                    $(".time_line .base_bar").css("background-size",percentage + "% 100%");
                  }
                }
                 
            });
            $(myAudio).trigger("loadedmetadata");
            /*歌曲播放时间的格式化,将秒数格式化为“分:秒”的形式*/
            function formatTime(time) {
                var minutes = parseInt(time/60);
                var seconds = parseInt(time%60);
                seconds<10 && (seconds = "0" + seconds);
                return minutes + ":" + seconds;
            };
        }
    });
})(jQuery)

html5+css3酷炫音频播放器代码的更多相关文章

  1. 【大结局】《从案例中学习JavaScript》之酷炫音乐播放器(四)

    这是之前写的用H5制作的音乐播放器,前三节其实已经做得差不多了,音轨的制作原理已经在上一节说明,不过一直还没有和音乐对接. 本章作为该系列的一个完结篇,我会专门把动态音轨的实现代码贴出来,demo地址 ...

  2. (jsp/html)网页上嵌入播放器(常用播放器代码整理) http://www.jb51.net/article/37267.htm

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助   这个其实很简单,只要在HTML上添加以上代码就O ...

  3. HTML5 音频播放器-Javascript代码(短小精悍)

    直接上干货咯! //HTML5 音频播放器 lzpong 2015/01/19 var wavPlayer = function () { if(window.parent.wavPlayer) re ...

  4. 【jquery】一款不错的音频播放器——Amazing Audio Player

    前段时间分享了一款视频播放器,点击这里.今天介绍一款不错的音频播放器——Amazing Audio Player. 介绍: Amazing Audio Player 是一个使用很方便的 Windows ...

  5. IOS开发之简单音频播放器

    今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易 ...

  6. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)

    转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...

  7. Unity3D音频播放器 动态装载组件

    大多数在线Unity有关如何只教程Unity在播放音乐.之后如何通过拖动它们无法继续添加音频文件 但有时在游戏中的对象要玩几个声音.这时候我们就需要使用代码控制,拖动推教程AudioClip颂值的方法 ...

  8. 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的音频播放器系列文章列表: <最简单的基于FFMPEG+SDL ...

  9. OCiOS开发:音频播放器 AVAudioPlayer

    简单介绍 AVAudioPlayer音频播放器可以提供简单的音频播放功能.其头文件包括在AVFoudation.framework中. AVAudioPlayer未提供可视化界面,须要通过其提供的播放 ...

随机推荐

  1. linux 文件查找实用技巧

    1.tail catalina.out -n 100000 | grep -niR com.uujimu.utils.ArticleContentReplace.replacNumToA 查找内容,并 ...

  2. xshell容易断开的问题

    修改服务器的sshd_config文件. http://bbs.51cto.com/thread-904289-1.html

  3. 关于PM的认识

    1 我眼中的PM 1.1 人云“一个管理,半个专家”,我说“一个管理,两个专家” 如今,我发现我们不得不面对这样一个现实——角色兼职.我习惯上把项目分为三类:性命攸关的项目(涉及到人身安全的项目,如铁 ...

  4. java集合归纳

    学习自: http://android.blog.51cto.com/268543/400557/ MAP Collection 堆栈队列操作尽可能考虑 linkedlist 多线程同步操作尽可能考虑 ...

  5. GIT简单使用——多人协作篇

    多人协作的工作模式通常是这样:1.首先,可以试图用git push origin <branch-name>推送自己的修改:2.如果推送失败,则因为远程分支比你的本地更新,需要先用git ...

  6. emacs 简记

    简介 Emacs作为神的编辑器,不用介绍了吧,说点感受. 用了一段时间了,总体感觉其实Emacs是很简单的,甚至比vim还简单,因为在X环境下,打开后可以就像记事本一样使用.但是,使用Emacs的人一 ...

  7. HDFS源码分析心跳汇报之周期性心跳

    HDFS源码分析心跳汇报之周期性心跳,近期推出!

  8. 【PyCharm编辑器】之无法导入引用手动新建的包或类,报:This inspection detects names that should resolve but don't. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases.

    一.现象描述 如下图所示,手动新建个类包calculator.py,想在test.py文件引用它,发现一直报红线,引用失败 Unresolved reference 'calculator' less ...

  9. 将到来的战略转变:移动 Web 还是移动 Apps?

    目前来看,移动应用比移动网站的易用性更高,但变化即将发生,移动网站最终将优于Apps,成为更好的策略选择. 一家公司制定移动策略时,最重要的问题是:是否需要考虑为移动设备特别做点什么.一些公司永远都不 ...

  10. Swiftl优秀的特性

    Swift语言在吸收诸多优秀语言如java.c++,Python之后.提供给开发人员大量优秀的特性. 以下我列举一下,swift一些优秀的特性: 1.函数使用经典的圆括号和点调用语法 2.函数标签特性 ...