Html完成歌曲歌詞同步
發表時間:2023-09-11 來源:明輝站整理相關軟件相關文章人氣:
[摘要]這篇文章主要介紹了關于Html實現歌曲歌詞同步,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8&q...
這篇文章主要介紹了關于Html實現歌曲歌詞同步,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>歌詞同步</title>
<style>
body {
background:url("Img/起風了.jpg") center no-repeat ;
background-size:60% 100%;
}
* {
margin:0 auto;
padding:0;
}
.play {
color: #01e5ff;
font-size: 24px;
}
.overPlay {
font-size: inherit;
color: #fff;
}
#p_lrc {
position: absolute;
padding-top: 0px;
left: 28%;
top: 300px;
width:50%;
transition: top .5s;
margin: 0 auto;
}
.p_DisLrc {
overflow: hidden;
color:#b1abab;
width: 70%;
height: 600px;
position: relative;
margin: 0 auto;
}
#audio {
width: 100%;
}
.p_audio {
width: 50%;
margin: 0 auto;
}
.p_but {
position: absolute;
font-size: 26px;
font-weight: 900;
top: 40%;
right: 0%;
}
.p_but p {
cursor: pointer;
}
</style>
<link href="CSS/iconfont.css" rel="stylesheet" />
</head>
<body>
<p id="p_1" style="display: none;">
</p>
<!-- 歌詞顯示界面 -->
<p class="p_DisLrc">
<p id="p_lrc">
<p id="lrc_row1"></p>
</p>
<!-- 用于調整歌詞位置 -->
<p class="p_but">
<p onmousedown="time = setInterval(btn_down,0)" onmouseup="clearInterval
(time)"><i class="iconfont icon-top"></i></p>
<p onmousedown="time = setInterval(btn_top,0)" onmouseup="clearInterval
(time)"><i class="iconfont icon-down"></i></p>
</p>
</p>
<!-- 播放器控件 -->
<p class="p_audio">
<audio id="audio" controls="controls" autoplay="autoplay">
<source src="audio/起風了.mp3" type="audio/mpeg">
</audio>
</p>
<script src="JavaScript/jquery-3.3.1.js"></script>
<script>
var audio = document.getElementById("audio");
var play = $("#lrc_row1");
//將歌詞添加到p中
$(document).ready(function () {
//加載歌詞
$('#p_1').load("LRC/qifengle.lrc");
//獲取所有歌詞
setTimeout(function () {
var lrcArr = $("#p_1").text().split('\n');
for (var i = 4; i < lrcArr.length; i++) {
var p = document.createElement("p");
//空白歌詞不進行加載
if (lrcArr[i].substring(10) != "") {
p.innerText = lrcArr[i].substring(10);
$("#p_lrc").append(p);
}
}
}, 200)
})
function lrcDisplay() {
//獲取播放進度(轉換的格式為: 00:00)
var minute = parseInt(audio.currentTime / 60);//分鐘
minute = minute == 0 ? "00" : (minute + "").length < 2 ? "0" + minute : minute;
//獲取秒數
var second = (parseInt(audio.currentTime)) % 60;
second = second == 0 ? "00" : (second + "").length < 2 ? "0" + second : second;
//正則表達匹配歌詞
var regex = new RegExp('\\[' + (minute + ":" + second) + '.+\\].+\n');
var text = regex.exec($("#p_1").text());
if (text != null) {
var str1 = new String($(play).next().text());
var str2 = new String(text[0].substring(10));
if (str1.trim() == str2.trim()) {
//歌詞顏色變色
$(play).attr("class", "overPlay");
play = $(play).next();
$(play).attr("class", "play");
//歌詞滾動(自動)
var top = parseInt($("#p_lrc").css("top"));
$("#p_lrc").css("top", -1 * ((-1 * top) + 22) + "px");
}
}
}
setInterval(lrcDisplay, 500);
//歌詞滾動(手動)
var time = null;
function btn_top() {
var top = parseInt($("#p_lrc").css("top"));
$("#p_lrc").css("top", -1 * ((-1 * top) + 100) + "px");
}
function btn_down() {
var top = parseInt($("#p_lrc").css("top"));
if (top <= 0)
$("#p_lrc").css("top", -1 * ((-1 * top) - 100) + "px");
}
//調整歌詞位置的函數
function btn_top() {
var top = parseInt($("#p_lrc").css("top"));
$("#p_lrc").css("top", -1 * ((-1 * top) + 30) + "px");
}
/*
1.歌詞文件不能是默認編碼(記事本文件和lrc文件默認為ANSI編碼) 只需要改為 UTF-8或
者GB2312,否則亂碼
2.歌曲因為沒有算毫秒差距,可能出現細微誤差
3.因為網頁同源策略的原因,外部直接打開html文件只能用firefox訪問,
不能進行跨域訪問,如果不使用文件讀取可以在任意地方打開.
4.因為ajax識別原因,會把空格當做分割內容,即歌詞文件名不能有空格
5.因為js對文件操作以及ajax請求存在諸多默認限制,若以類似方法在winfrom asp等中很
多問題都會得到解決.
6.setTimeout()和setInterval(),在瀏覽器窗口非激活的狀態下會停止工作或者以極慢的
速度工作。目前我已知就IE不會有這種問題。
*/
</script>
</body>
</html>
相關推薦:
HTML實現美化上傳文件樣式
HTML實現搶票功能(設定時間打開搶票的頁面)
以上就是Html實現歌曲歌詞同步的詳細內容,更多請關注php中文網其它相關文章!
網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。