English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
First, let's take a look at the effect diagram, friends who are interested can refer to the implementation code
Core code as follows:
$.ajax({ url: "/music/music.txt", type: "get", success: function(data) { data = jQuery.parseJSON(data); var length = data.length; var now=0; for (i = 0; i < length; i++) { $("#musicText li").eq(i).after("<li>" + data[i].text + "</li>") } var player = { playButton: $(".play"), songText: $(".musicText"), state: 0, //0 play,1suspension audio: $("#audio").get(0), bind: function() { //Bind button //Play or pause console.log($.type(this)) console.log($.type(this)) var obj = this; this.playButton.click(function() { obj.changeState(obj.state ? 0 : 1); }); //Set sound $("#voice").click(function(ex) { var percent = (ex.clientX - $(this).offset().left) / $(this).width(); obj.setVoice(percent); }); //Default sound 0.8 obj.setVoice(1.0); //Silence $("#voiceOP").click(function() { if (obj.muted) { $(this).removeClass("muted"); obj.audio.muted = false; obj.muted = false; } else { $(this).addClass("muted"); obj.audio.muted = true; obj.muted = true; } }); //mise en place du progrès $("#MusicProgress").click(function(ex) { var percent = (ex.clientX - $(this).offset().left) / $(this).width(); obj.setProgress(percent, false); }); //chanson précédente $("#prev").click(function() { obj.nowIndex--; if (obj.nowIndex < 0) obj.nowIndex = obj.list.length - 1; obj.playSing(obj.nowIndex); }); //chanson suivante $("#next").click(function() { obj.nowIndex++; if (obj.nowIndex >= obj.list.length) obj.nowIndex = 0; obj.playSing(obj.nowIndex); player.audio.play(); }); //liaison d'événements - changement de temps de lecture this.audio.ontimeupdate = function() { obj.timeChange(); } //fin de lecture this.audio.onended = function() { obj.singEnd(); } }, //changement d'état de lecture changeState: function(_state) { this.state = _state; if (!this.state) { this.playButton.removeClass("pause").addClass("play"); this.pause(); } else { this.playButton.removeClass("play").addClass("pause"); this.play(); } }, //lecture play: function() { this.audio.play(); }, //suspension pause: function() { this.audio.pause(); }, timeChange: function() { var nowSec = Math.floor(this.audio.currentTime); console.log(nowSec) console.log(data[now].time) if(nowSec>data[now].time){ now = now + 1; console.log(now) $("#musicText li").eq(now).addClass("active").siblings("li").removeClass("active"); $("#musicText").css("top",-(24*now)+138) } var totalSec = Math.floor(this.audio.duration); //当前进度显示 var secTip = secFormat(nowSec) + "/" + secFormat(totalSec); if (secTip.length == 11) $("#secTip").html(secTip); this.setProgress(nowSec / totalSec, true); }, setVoice: function(percent) { $("#voice").children(".bar").css("width", percent * 100 + "%"); $("#voice").children("a").css("left", percent * 100 + "%"); this.audio.volume = percent; }, setProgress: function(percent, justCss) { $("#MusicProgress").children(".bar").css("width", percent * 100 + "%"); $("#MusicProgress").children("a").css("left", percent * 100 + "%"); if (!justCss) this.audio.currentTime = this.audio.duration * percent; }, singEnd: function() { if (this.style == 0) { this.nowIndex++; if (this.nowIndex >= this.list.length) this.nowIndex = 0; this.playSing(this.nowIndex); } else { var index = Math.floor(Math.random() * (this.list.length + 1)) - 1; index = index < 0 &63; 0 : index; index = index >= this.list.length &63; (this.list.length - 1) : index; this.playSing(index); this.nowIndex = index; } }, }; player.bind(); function secFormat(num) { var m = Math.floor(num / 60); var s = Math.floor(num % 60); return makeFormat(m) + ":" + makeFormat(s); function makeFormat(n) { if (n >= 10) return n; else { return "0" + n; } } } } )
Ensuite, le code ici est alpha0.0.1La version, qui est en cours de mise à jour.
Les codes de lecteur de musique avec défilement de paroles basés sur jQuery que l'éditeur présente ici devraient être utiles à tous. Si vous avez des questions, n'hésitez pas à laisser un message, l'éditeur répondra à temps.
Déclaration : Le contenu de cet article est hébergé sur Internet, propriété de son auteur respectif, partagé par les utilisateurs d'Internet de manière volontaire et téléversé. Ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, vous êtes invité à envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois confirmée, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)