用jquery写一个属于自己的音乐播放器

看到一个用css3实现的CD的动画,演示在这儿http://codepen.io/_kieran/pen/QNRmep

突然那我就想说给自己做一个音乐播放器吧,说做就做。演示在 https://echolsx.github.io/music/

Github传送门: https://github.com/EchoLsx/music

图片描述

主要代码:

<div id="background"></div>
<div id="player">

<div class="cover"></div>
<div class="ctrl">
    <div class="tag">
        <strong>Title</strong>
        <span class="artist">Artist</span>
        <span class="album">Album</span>
    </div>
    <div class="control">
            <div class="left">
                <div class="rewind icon"></div>
                <div class="playback icon"></div>
                <div class="fastforward icon"></div>
            </div>
            <div class="volume right">
                <div class="mute icon left"></div>
                <div class="slider left">
                    <div class="pace"></div>
                </div>
            </div>
        </div>
        <div class="progress">
            <div class="slider">
                <div class="loaded"></div>
                <div class="pace"></div>
                </div>
                <div class="timer left">0:00</div>
                <div class="right">
                    <div class="repeat icon"></div>
                <div class="shuffle icon"></div>
            </div>
        </div>
    </div>
</div>
<ul id="playlist"></ul>

JS部分:

   (function($){
        // Settings
        var repeat = localStorage.repeat || 0,
            shuffle = localStorage.shuffle || 'false',
            continous = true,
            autoplay = true,
            playlist = [
    {
    title: 'Lost Stars',
    artist: 'Adam Levine',
    album: 'Begin Again (Music From and Inspired By the Original Motion Picture)',
    cover:'img/1.jpg',
    mp3: 'mp3/Adam Levine - Lost Stars.mp3',
    ogg: ''
    },
    {
    title: 'Color Blind',
    artist: 'Matt B',
    album: 'LOVE AND WAR',
    cover: 'img/8.jpg',
    mp3: 'mp3/Matt B - Color Blind.mp3',
    ogg: ''
    },
    ];
    
// Load playlist
    for (var i=0; i<playlist.length; i++){
        var item = playlist[i];
        $('#playlist').append('<li>'+item.artist+' - '+item.title+'</li>');
    }

    var time = new Date(),
        currentTrack = shuffle === 'true' ? time.getTime() % playlist.length : 0,
        trigger = false,
        audio, timeout, isPlaying, playCounts;

    var play = function(){
        audio.play();
        $('.playback').addClass('playing');
        timeout = setInterval(updateProgress, 500);
        isPlaying = true;
    }

    var pause = function(){
        audio.pause();
        $('.playback').removeClass('playing');
        clearInterval(updateProgress);
        isPlaying = false;
    }


// Update progress
    var setProgress = function(value){
        var currentSec = parseInt(value%60) < 10 ? '0' + parseInt(value%60) : parseInt(value%60),
            ratio = value / audio.duration * 100;

        $('.timer').html(parseInt(value/60)+':'+currentSec);
        $('.progress .pace').css('width', ratio + '%');
        $('.progress .slider a').css('left', ratio + '%');
    }

    var updateProgress = function(){
        setProgress(audio.currentTime);
    }


// Progress slider
    $('.progress .slider').slider({step: 0.1, slide: function(event, ui){
        $(this).addClass('enable');
        setProgress(audio.duration * ui.value / 100);
        clearInterval(timeout);
    }, stop: function(event, ui){
        audio.currentTime = audio.duration * ui.value / 100;
        $(this).removeClass('enable');
        timeout = setInterval(updateProgress, 500);
    }});


// Volume slider
    var setVolume = function(value){
        audio.volume = localStorage.volume = value;
        $('.volume .pace').css('width', value * 100 + '%');
        $('.volume .slider a').css('left', value * 100 + '%');
    }

    var volume = localStorage.volume || 0.5;
    $('.volume .slider').slider({max: 1, min: 0, step: 0.01, value: volume, slide: function(event, ui){
        setVolume(ui.value);
        $(this).addClass('enable');
        $('.mute').removeClass('enable');
    }, stop: function(){
        $(this).removeClass('enable');
    }}).children('.pace').css('width', volume * 100 + '%');

    $('.mute').click(function(){
        if ($(this).hasClass('enable')){
            setVolume($(this).data('volume'));
            $(this).removeClass('enable');
        } else {
            $(this).data('volume', audio.volume).addClass('enable');
            setVolume(0);
        }
    });



// Switch track
    var switchTrack = function(i){
        if (i < 0){
            track = currentTrack = playlist.length - 1;
        } else if (i >= playlist.length){
            track = currentTrack = 0;
        } else {
            track = i;
        }

        $('audio').remove();
        loadMusic(track);
        if (isPlaying == true) play();
    }

// Shuffle
var shufflePlay = function(){
    var time = new Date(),
        lastTrack = currentTrack;
    currentTrack = time.getTime() % playlist.length;
    if (lastTrack == currentTrack) ++currentTrack;
    switchTrack(currentTrack);
}

// Fire when track ended
var ended = function(){
    pause();
    audio.currentTime = 0;
    playCounts++;
    if (continous == true) isPlaying = true;
    if (repeat == 1){
        play();
    } else {
        if (shuffle === 'true'){
            shufflePlay();
        } else {
            if (repeat == 2){
                switchTrack(++currentTrack);
            } else {
                if (currentTrack < playlist.length) switchTrack(++currentTrack);
            }
        }
    }
}

var beforeLoad = function(){
    var endVal = this.seekable && this.seekable.length ? this.seekable.end(0) : 0;
    $('.progress .loaded').css('width', (100 / (this.duration || 1) * endVal) +'%');
}

// Fire when track loaded completely
var afterLoad = function(){
    if (autoplay == true) play();
}

// Load track
var loadMusic = function(i){
    var item = playlist[i],
        newaudio = $('<audio>').html('<source src="'+item.mp3+'"><source src="'+item.ogg+'">').appendTo('#player');
    
    $('.cover').html('<img src="'+item.cover+'" alt="'+item.album+'">');
    $('.tag').html('<strong>'+item.title+'</strong><span class="artist">'+item.artist+'</span><span class="album">'+item.album+'</span>');
    $('#playlist li').removeClass('playing').eq(i).addClass('playing');
    audio = newaudio[0];
    audio.volume = $('.mute').hasClass('enable') ? 0 : volume;
    audio.addEventListener('progress', beforeLoad, false);
    audio.addEventListener('durationchange', beforeLoad, false);
    audio.addEventListener('canplay', afterLoad, false);
    audio.addEventListener('ended', ended, false);
}

loadMusic(currentTrack);
$('.playback').on('click', function(){
    if ($(this).hasClass('playing')){
        pause();
    } else {
        play();
    }
});
$('.rewind').on('click', function(){
    if (shuffle === 'true'){
        shufflePlay();
    } else {
        switchTrack(--currentTrack);
    }
});
$('.fastforward').on('click', function(){
    if (shuffle === 'true'){
        shufflePlay();
    } else {
        switchTrack(++currentTrack);
    }
});
$('#playlist li').each(function(i){
    var _i = i;
    $(this).on('click', function(){
        switchTrack(_i);
    });
});

if (shuffle === 'true') $('.shuffle').addClass('enable');
if (repeat == 1){
    $('.repeat').addClass('once');
} else if (repeat == 2){
    $('.repeat').addClass('all');
}

$('.repeat').on('click', function(){
    if ($(this).hasClass('once')){
        repeat = localStorage.repeat = 2;
        $(this).removeClass('once').addClass('all');
    } else if ($(this).hasClass('all')){
        repeat = localStorage.repeat = 0;
        $(this).removeClass('all');
    } else {
        repeat = localStorage.repeat = 1;
        $(this).addClass('once');
    }
});

    $('.shuffle').on('click', function(){
        if ($(this).hasClass('enable')){
            shuffle = localStorage.shuffle = 'false';
            $(this).removeClass('enable');
        } else {
            shuffle = localStorage.shuffle = 'true';
            $(this).addClass('enable');
        }
    });
})(jQuery);
weixin_33966365
关注 关注
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
jquery实现--自定义视频播放器
oiaa的博客
10-22 2850
html &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&g
jQuery音乐播放器
qq_36926807的博客
07-14 1051
效果图:实现这个功能需要引入:TweenMax.min.jsjs代码如下: $(document).ready(function () {    var audioElement = document.createElement('audio');    audioElement.setAttribute('src', $('.active-song').attr('data-src'));   ...
JQ 自定义HTML5 音频播放
11-19
原创,未经许可请勿转载!JQ音频播放器
【html、css、jq】制作一个简洁的音乐播放器
weixin_34319817的博客
12-13 323
声明:本文章版权归饥人谷和张新望所有,转载需经作者同意 这个播放器的音乐是通过豆瓣FM的API获取到的,我们可以随机的听到豆瓣FM的任何音乐。(这些API是饥人谷的老师整理的) DEMO html+js源代码 css源代码 html部分 代码: 这里就不css的代码了,大家可以直接看源文件或者从开发者工具中去看。如果有...
JQuery实现简易音乐播放器
05-01 5409
      自学前端有一阵子了,之前一直都是跟着教学视频来一些小例子,实现页面效果和功能,这次下定决心开始自己设计并实现一个网页版的音乐播放器,来巩固之前所学的html,css ,js,JQuery等知识。在网上参考了QQ音乐,网易云音乐的界面设计和功能实现,决定界面风格以灰色为主,显得逼格高一点点。主要的播放等功能则借鉴了网易云音乐。主要页面布局1.导航栏 2.轮播图 3.音乐播放列表 4.音...
jQuery仿QQ音乐播放器
绳锯木断,水滴石穿,专心写文,无问西东!!!
09-07 1090
本文通过Html+CSS+jQuery开发仿QQ版的音乐播放器,是前端技术的综合应用,所用素材来源于网络,仅供学习分享使用,如有不足之处,还请指正。 涉及知识点 在本例中用到的知识点如下,按jQuery和CSS进行区分: jQuery一个 JavaScript 库, 极大地简化了 JavaScript 编程,常见知识点如下: 通过标签获取jQuery对象:var $audio =$("audio"); 通过选择符获取jQuery对象并设置文本内容:$(".music_progrss_time".
运用Java制作一个属于自己的音乐播放软件
坚持不懈的大白的博客
01-23 6451
上个寒假小编用python做了一个音乐播放软件,觉得那个效果还不怎么的,这个学期学了一下Java,于是今天用Java做了一个音乐播放软件,个人觉得这个播放软件有了一点质的飞跃,不知到大家觉得怎么样?
利用jQuery设计一个简单的web音乐播放器的实例分享
10-22
主要介绍了利用jQuery设计一个简单的web音乐播放器的实例分享,包括PHP后台和从MySQL中读取曲目等基本功能的实现,需要的朋友可以参考下
jquery音乐播放器
08-03
jquery音乐播放器,主要功能:播放暂停,滑动或点击调节音量,滑动或点击调节进度,歌词同步,拖拽歌词调节进度。音乐文件是静态的,可自行修改从服务器上获取,主要的逻辑都好了。
jQuery实现的音乐播放器源码
09-06
jQuery实现的音乐播放器源代码 界面还不错
jQuery HTML5实现带歌曲列表的音乐播放器代码
04-21
音乐播放,支持上一首下一首,音量调节和播放条滚动
jQuery仿QQ音乐播放器网页版代码
04-02
jQuery仿QQ音乐播放器网页版代码是一款黑色样式风格的网页QQ音乐播放器样式代码。
jQuery精致的音乐播放器代码
06-24
jQuery精致的音乐播放器代码是一款内嵌背景图片非常漂亮,带播放进度条,可以控制播放暂停,调整音量等播放器常用的功能。
基于jQuery的HTML5移动端音乐播放器源码.zip
05-06
基于jQuery的HTML5移动端音乐播放器源码 基于jQuery的HTML5移动端音乐播放器源码 基于jQuery的HTML5移动端音乐播放器源码 基于jQuery的HTML5移动端音乐播放器源码 基于jQuery的HTML5移动端音乐播放器...
python怎么放音乐_用Python开发一个属于你的音乐播放器
weixin_39760068的博客
11-23 208
原标题:用Python开发一个属于你的音乐播放器​前言很多人都喜欢听歌,如果你喜欢的人,用你开发的软件听着小情歌,心里岂不是美滋滋。Python爬取网易云歌单音乐+Python开发音乐播放器,两者结合那岂不就是一个新的网易云音乐播放器了。基本环境配置版本:Python3.6系统:Windows爬取网易云音乐相关模块: 音乐播放器相关模块简易版: 豪华版: 先看看爬取音乐部分吧,Python爬取网...
HTML5 音频 视频的使用以及自定义播放器
12-25 1198
一、音频 audio:音频 src:播放的音频文件的路径 controls:音频播放器的控制面板 autoplay:自动播放 loop:循环 <audio src="../mp3/xxx" controls autoplay loop></audio> 二、视频 video:视频 src:播放的视频文件的路径 controls:视频播放器的控制面板 auto...
使用jQuery插件设计在线音乐播放器
cjze89140的博客
05-09 137
 【IT168 专稿】jQuery的确是十分强大的工具,在网页上,你甚至可以用它配合其他jQuery插件设计一款在线网页播放器。本文就介绍了如何使用PHP,CSS和jQuery一个开源的jQuery插件jPlayer,设计一个...
【redis】Spring之RedisTemplate配置与使用
最新发布
05-30 183
转载:Spring之RedisTemplate配置与使用用过redis,但直接使用Jedis进行相应的交互操作,现在正好来看一下RedisTemplate是怎么实现的,以及使用起来是否更加便利。
使用jQuery实现一个音乐播放器
04-16
您可以先在HTML文件中添加一个音频标签,并设置音频文件的URL,然后使用jQuery来控制音乐的播放和暂停。具体的代码可以参考以下示例: HTML代码: ``` <audio id="audio" src="music.mp3"></audio> 播放 暂停 ``` ...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Memory Compression这到底是个什么东西? 113030
  • IntelliJ IDEA 对于generated source的处理 11421
  • Apache日志记录组件Log4j出现反序列化漏洞 黑客可以执行任意代码 所有2.x版本均受影响... 10883
  • Python操作Excel删除一个Sheet 7425
  • vuecli3+webpack4优化实践(删除console.log和配置dllPlugin) 6686

最新评论

  • Entity Framework 动态构造Lambda表达式Expression<Func<T, bool>>

    morliz子轩: 为什么first.Compose(second, Expression.Or)放在VB上,就一直报错类型“BinaryExpression”的值无法转换

  • Hadoop localhost: frankxulei@localhost: Permission denied (publickey,password)

    丹尼斯维奇: 终于成功了

  • Hadoop localhost: frankxulei@localhost: Permission denied (publickey,password)

    凉西瓜: 哭了,终于成功!感谢大佬~

  • vue-i18n使用及踩坑记录

    QQ1257545065: vue2.0版本只能使用i18n 8.0及其以下的版本,如果vue2.0使用I18n 9.0++的版本,会报错

  • vue-i18n使用及踩坑记录

    xufulin2: 也是自定义了 messages 的名称,然后卡了很久……

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • XSLT学习笔记
  • Windows To Ghost系统封装之必备软件集 - 好压
  • 推荐一个配置linux服务的网站
2019年336篇
2018年680篇
2017年971篇
2016年532篇
2015年435篇
2014年312篇
2013年305篇
2012年283篇
2011年207篇
2010年151篇
2009年142篇
2008年115篇
2007年88篇
2006年39篇
2005年23篇
2004年17篇
2002年1篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司柳州网站制作价格南山网站搜索优化价格石岩阿里店铺托管多少钱唐山网站优化按天计费多少钱中卫外贸网站建设价格营口网站优化按天收费哪家好青岛优化推荐辽阳网站优化按天扣费报价红河网站搜索优化平湖阿里店铺运营推荐爱联百搜标王报价宣城网站改版推荐天津网站建设哪家好龙岩企业网站改版多少钱阿坝seo排名公司宝安百度网站优化排名公司横岗网站seo优化多少钱延安关键词按天扣费推荐伊春模板制作哪家好宿州模板制作价格吉安网站优化哪家好宝安seo网站推广哪家好阳江建设网站哪家好漳州如何制作网站报价温州seo网站优化公司张北关键词排名包年推广报价仙桃SEO按天扣费报价中山百度seo报价金昌企业网站改版推荐双龙高端网站设计多少钱歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化