实例介绍
【实例简介】这个源码在这之前有好几个人找我分享,然后都分享给了他们,一个一个的发有点麻烦,我索性就直接分享在博客里面,大家可以免费下载使用,这个音乐源码还是挺炫酷的,里面的音乐可以在index.html里面替换。觉得可以的话不妨在下方评论留下你的足迹。
【实例截图】
【核心代码】
(function($){ // Settings var repeat = localStorage.repeat || 0, shuffle = localStorage.shuffle || 'false', continous = true, autoplay = true, playlist = [ { title: 'Arston,Jake Reese - Circle Track (Radio Edit)', artist: 'Arston,Jake Reese', album: 'Arston,Jake Reese - Circle Track (Radio Edit).mp3', cover:'img/1.jpg', mp3: 'mp3/Arston,Jake Reese - Circle Track (Radio Edit).mp3', ogg: '' }, { title: 'Every Chance We Get We Run ', artist: 'David Guetta,Alesso', album: 'David Guetta,Alesso - Every Chance We Get We Run .mp3', cover: 'img/2.jpg', mp3: 'mp3/David Guetta,Alesso - Every Chance We Get We Run (feat. Tegan & Sara).mp3', ogg: '' }, { title: ' Life', artist: '7obu - Tobu', album: '7obu - Tobu - Life.mp3', cover: 'img/3.jpg', mp3: 'mp3/7obu - Tobu - Life.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);
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论