本文摘自PHP中文网,作者coldplay.xixi,侵删。
html制作滚动歌词的方法:首先在标签里面写好编码格式,引入css样式和jQuery;然后放置播放器,代码为【<audio autoplay="autoplay src="爱在西元前.mp3" controls>】。

本教程操作环境:windows7系统、html5版,DELL G3电脑。
html制作滚动歌词的方法:
首先我们创建一个html文件,名字随便取,比如:index.html,这个简单,不用多说。不着急开始写代码,我们在创建一个css文件,不妨就命名为musicplay.css,js的话我们直接写道html文件里面方便阅读和调整,就不创建新的js文件了,但是你要准备jQuery文件,如果没有也没关系,待会说解决方法。准备工作结束了,我们开始写了,首先在标签里面写好编码格式,顺便也把我们之前创建的css样式和jQuery引入,代码如下:
代码如下:<head>
1 2 3 4 5 | <meta charset= "UTF-8" ><title>爱在西元前-周杰伦
</title><link type= "text/css" rel= "stylesheet" href= "css/musicplay.css" />
<script src= "https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js" ></script>
<!--注意:这种从网上直接引入的方法需要链接网络,如果你本地下载好了,就把这句话删除,采用下面的映入方式-->
<script src= "js/jquery-1.9.1.min.js" ></script></head>
|
head内容写好后,我们开始写body里面的了,首先我们用放置播放器,就是标签,代码如下:
1 2 3 | <center>
<audio autoplay= "autoplay src=" 爱在西元前.mp3" controls></audio>
</center><!--这里修改播放器里面播放的音乐,这里只有简单的控制,没做上一曲,下一曲的功能 ,autoplay= "autoplay" 属性为自动播放,不想让自动播放删去即可 -->
|
去即可 -->接着写一个盒子,代码如下:
盒子的css代码如下(功能见备注):
接下来就是js脚本事了,我们的设计思路是(分下面几个函数完成):
函数1:parseLyric()分割歌词,这一步主要是为了分行显示歌词
函数2:highLight()当前放到的歌词高亮显示,为了表示当前唱到那一句了
函数3:audio.addEventListener()实时渲染,因为是滚动的,所以要不停的渲染
函数4:getLineNo()获取此时的行数,如果我们快进或快退的时候,歌词也要跟着我们的调整而改变
函数5:audio.addEventListener()播放完回到开始,这个可以不做,没有太意义,这是为了完善功能解释好这几个函数之后,我直接贴代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <script type= "text/javascript" > $( function () {
function parseLyric(text) {
let lyricArr = text.split( '\n' );
let result = [];
for (i = 0; i < lyricArr.length; i++) { let playTimeArr = lyricArr[i].match(/\[\d{2}:\d{2}((\.|\:)\d{2})\]/g);
let lineLyric = "" ;
if (lyricArr[i].split(playTimeArr).length > 0) {
lineLyric = lyricArr[i].split(playTimeArr); }
if (playTimeArr != null) { for (let j = 0; j < playTimeArr.length; j++) {
let time = playTimeArr[j].substring(1, playTimeArr[j].indexOf( "]" )).split( ":" );
result.push({ time: (parseInt(time[0]) * 60 + parseFloat(time[1])).toFixed(4), content: String(lineLyric). substr (1) });
}
}
}
return result;
}
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | let audio = document.querySelector( 'audio' ); let result = parseLyric(text);
let $ul = $( "<ul></ul>" );
for (let i = 0; i < result.length; i++) { let $li = $( "<li></li>" ).text(result[i].content); $ul .append( $li );
}
$( ".bg" ).append( $ul );
let lineNo = 0;
let preLine =1;
let lineHeight = -30;
function highLight() {
let $li = $( "li" ); $li .eq(lineNo).addClass( "active" ).siblings().removeClass( "active" );
if (lineNo > preLine) { $ul .stop(true, true).animate({ top: (lineNo - preLine) * lineHeight });
}
}
highLight();
audio.addEventListener( "timeupdate" , function () {
if (lineNo == result.length) return ; if ($( "li" ).eq(0).hasClass( "active" )) { $( "ul" ).css( "top" , "0" );
}
lineNo =getLineNo(audio.currentTime); highLight();
lineNo++; });
result[i].time
function getLineNo(currentTime) { if (currentTime >=parseFloat(result[lineNo].time)) {
for (let i = result.length - 1; i >= lineNo; i--) {
if (currentTime >= parseFloat(result[i].time)) { return i;
}
}
} else {
for (let i = 0; i <= lineNo; i++) { if (currentTime <= parseFloat(result[i].time)) { return i - 1;
}
}
}
}
audio.addEventListener( "ended" , function () { lineNo = 0;
highLight();
audio.play();
$( "ul" ).css( "top" , "0" );
});
});
</script>
|
相关学习推荐:html视频教程
以上就是html如何制作滚动歌词的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
angularjs是什么?为什么用angularjs?
纯css实现底层毛玻璃效果(代码示例)
Html几种特别分割线特效
Html的文字图片怎样垂直居中
怎样设置网页以新窗口方式打开
sHtml与Html的区别是什么
Html legend标签怎么用
Html option标签怎么添加两个value?option标签的用法解析
Html引用css文件的方法
Html 空链接 href="#"与href="javascript:void(0)"的区别
更多相关阅读请进入《Html》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » html如何制作滚动歌词