php中文歌词,html如何制作滚动歌词

html制作滚动歌词的方法:首先在标签里面写好编码格式,引入css样式和jQuery;然后放置播放器,代码为【】。

19239ed110e7d83530b5a347274ce2c0.png

本教程操作环境:windows7系统、html5版,DELL G3电脑。

html制作滚动歌词的方法:

首先我们创建一个html文件,名字随便取,比如:index.html,这个简单,不用多说。不着急开始写代码,我们在创建一个css文件,不妨就命名为musicplay.css,js的话我们直接写道html文件里面方便阅读和调整,就不创建新的js文件了,但是你要准备jQuery文件,如果没有也没关系,待会说解决方法。准备工作结束了,我们开始写了,首先在标签里面写好编码格式,顺便也把我们之前创建的css样式和jQuery引入,代码如下:

代码如下:

爱在西元前-周杰伦

head内容写好后,我们开始写body里面的了,首先我们用放置播放器,就是标签,代码如下:

去即可 -->接着写一个盒子,代码如下:

盒子的css代码如下(功能见备注):

接下来就是js脚本事了,我们的设计思路是(分下面几个函数完成):

函数1:parseLyric()分割歌词,这一步主要是为了分行显示歌词

函数2:highLight()当前放到的歌词高亮显示,为了表示当前唱到那一句了

函数3:audio.addEventListener()实时渲染,因为是滚动的,所以要不停的渲染

函数4:getLineNo()获取此时的行数,如果我们快进或快退的时候,歌词也要跟着我们的调整而改变

函数5:audio.addEventListener()播放完回到开始,这个可以不做,没有太意义,这是为了完善功能解释好这几个函数之后,我直接贴代码。

function parseLyric(text) {

//按行分割歌词

let lyricArr = text.split('\n'); //console.log(lyricArr)

//0: "[ti:爱在西元前]" "[ar:周杰伦]"...

let result = [];

//新建一个数组存放最后结果

//遍历分割后的歌词数组,将格式化后的时间节点,歌词填充到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;

}

// 这里请按照格式放入相应歌词--开始

// 格式可能看着很复杂,其实是根据lrc歌词文件换句前加入\n 换行符,然后删除多余空行.即可!// 这里请按照格式放入相应歌词--结束

let audio = document.querySelector('audio'); let result = parseLyric(text); //执行lyc解析 // 把生成的数据显示到界面上去

let $ul = $("

");

for (let i = 0; i < result.length; i++) { let $li = $("

").text(result[i].content); $ul.append($li);

}

$(".bg").append($ul);

let lineNo = 0;

// 当前行歌词

let preLine =1; // 当播放6行后开始滚动歌词

let lineHeight = -30; // 每次滚动的距离 // 滚动播放 歌词高亮 增加类名active

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");

});

});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker run 服务名_在 WSL2.0 的 Ubuntu 18 里使用 Docker

近日&#xff0c;随着Windows 10 2004版本的发布&#xff0c;WSL 2经过了近一年的insider测试&#xff0c;现在也正式上线了。Windows 10 2004中引入了一个真实的Linux kernel&#xff0c;使得系统全部的系统调用更加兼容。这也是首次&#xff0c;Linux kernel安装在Windows系统…

vb.net如何查询电脑麦克风收到声音_EMUI 10.1 跨屏协同实测:这一次把你的手机「搬」进电脑...

智能手机发展到现在&#xff0c;我们越来越需要手机与其他设备进行互联互通。电脑是我们办公最常用的工具&#xff0c;手机则是生活必需设备&#xff0c;这两者的协同需求&#xff0c;自然也就成为了大多数用户的痛点。Apple 用隔空投送、接力、随航等连续互通功能来打造系统生…

浮动导航栏php源码,JQuery 浮动导航栏实现代码

JQuery 浮动导航栏/* 浮动导航栏 Begin */#floatMenu{padding-top: 5px;background: url(http://img.jb51.net/images/quickmenu.gif) no-repeat;border: 1px solid #dcdcdc;position: absolute;top: 250px;left: 5px;margin-left: 0px;width: 86px;}#floatMenu ul{margin-left…

gerber文件怎么导贴片坐标_SMT贴片工序

贴片&#xff0c;也称SMT&#xff0c;就是把元器件用贴片机设备贴装在印刷好的PCB板上。贴片这一过程之所以用“贴”字&#xff0c;是因为锡膏内有助焊剂的成分&#xff0c;有一定的粘性&#xff0c;能够在没有熔化的时候&#xff0c;也能够黏住元器件。SMT又称贴片&#xff0c…

es内嵌文档查询_ElasticSearch 文档的增删改查都不会?

本文主要是介绍 ElasticSearch 的文档增删改查和批量操作&#xff0c;同时会介绍一些 REST API 返回状态码的具体含义。我们先来看下这个表&#xff1a;这个表包含了 Index、Create、Read、Update、Delete 这五种方法&#xff0c;我们先来看下 CRUD 操作的 HTTP 请求都长什么样…

如何在ps添加箭头_「PS精选案例教程」制作斑驳生锈字体

这个教程会教您如何设计发光斑驳的字体特效&#xff0c;会教您运用PS滤镜和纹理图片&#xff0c;同时也诠释了如何运用笔刷和图层样式给最终的字体效果增添光感。来&#xff0c;先看看最终效果&#xff01;第一步&#xff1a;创建一个1024*768的新文档。前景色#532118&#xff…

php 获取系统环境变量,java读取操作系统环境变量

java读取操作系统环境变量import java.util.*;import java.io.*;class SysProb{//返回当前系统变量的函数&#xff0c;结果放在一个Properties里边&#xff0c;这里只针对win2k以上的&#xff0c;其它系统可以自己改进public Properties getEnv() throws Exception{Properties …

查python答案的软件-中国大学MOOC的APP慕课用Python玩转数据答案查题公众号

下面属于欧盟成员对土耳其要求加入欧盟的顾虑的一项是&#xff1a;&#xff08;)A.土耳其地理位置特殊B.土耳其经济发 某种双面高密软盘片格式化后&#xff0c;若每面有A个磁道&#xff0c;每个磁道有B个扇区&#xff0c;每个扇区有C个字节。则该种软盘 通信工程施工中电源线与…

车辆调度 matlab,基于遗传算法的车辆调度问题的matlab源程序

越界 发表于 2013-7-8 09:16 有偿服务哦function chushis)K4; %最多4辆车inn100;%迭代次数上限citynum8;%需求点数量KMcitynumK1; %配送途径种类%产生初始种群mzeros(1,inn);mm;szeros(inn,citynumK1);for i1:1:inns(i,:)randperm(KM); %随机排列构成个体ends[m s];for i1:inn…

strtotime()加半个小时_椰子鸡这样做太好吃了,一滴水不用加,鲜香嫩滑,做法非常简单...

转眼就是6月了&#xff0c;时间真的好快啊&#xff0c;好似白驹过隙&#xff0c;一眼就过去了。刚刚还是桃花开的时候&#xff0c;转眼五月桃都熟了。不得不说&#xff0c;李煜说得很对&#xff0c;“林花谢了春红&#xff0c;太匆匆&#xff01;”6月了&#xff0c;6月有什么呢…

webpack 入口文件 php,如何实现webpack多入口文件打包配置

本篇文章主要介绍了webpack多入口文件页面打包配置详解&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。大多数情况下&#xff0c;我们使用 webpack来打包单页应用程序&#xff0c;这个时候只需要配置一个入口&#xff0c;一个模板文件&#xff0c;但也不尽是如此&am…

接口里面的方法都是抽象方法吗_大家都在讲高中学习的方法有哪些,那方法和技巧有什么异同的吗?...

大家都在讲高中学习的方法有哪些&#xff0c;那方法和技巧有什么异同吗&#xff1f;高中怎样学习&#xff0c;方法重要还是技巧更重要&#xff1f;老牛倒是觉得&#xff0c;二者密不可分&#xff0c;缺一不可。那么&#xff0c;我们一起来看看&#xff0c;高中怎样学习才是最好…

python 笔试题 英方_4000字转型数据分析师笔试面试经验分享

大家好&#xff0c;我是戴师兄~在上一篇文章中我分享了快速自学数据分析的经验。本篇文章&#xff0c;我将跟大家分享下我的笔试和面试心得。开头先说说我转型前的职业背景&#xff1a;想看笔试面试经验的同学萌可以直接跳过这一段~2018年我从中国人民大学经济管理学专业毕业&a…

android 抓取webview中的所有图片_如何一键提取PDF文档中的所有图片?

原标题&#xff1a;如何一键提取PDF文档中的所有图片&#xff1f;目前PDF文档被大家广泛应用&#xff0c;主要是因为PDF文档在传输和转换的过程中比较稳定&#xff0c;所以PDF格式几乎是办公文件格式的首选。大家都知道PDF文档转换格式以及编辑都需要专门的PDF编辑器来实现。但…

php shell 交互,通过 Tinker 实现 Laravel 命令行交互式 Shell

通过 Tinker 实现 Laravel 命令行交互式 Shell由 学院君 创建于2年前, 最后更新于 1年前版本号 #19508 views4 likes0 collectsREPL 与 PsySHLaravel 自带了一个功能强大的 REPL —— Tinker&#xff0c;所谓 REPL&#xff0c;是 Read–Eval–Print-Loop 的缩写&#xff0c;这是…

python中垃圾回收机制_Python中的变量和垃圾回收机制

1、python中的变量python和java中的变量本质不一样。java中声明变量时要指定变量的数据类型&#xff0c;int、str或某一类&#xff0c;之后虚拟机就会在内存中申请一块空间&#xff0c;空间的大小跟类型相关。通俗的理解就是把变量想象成一个盒子&#xff0c;盒子里能装什么东西…

戴尔电脑好还是华为好_华硕和戴尔笔记本哪种好 华硕和戴尔优缺点分析【详解】...

随着时代快速的发展&#xff0c;笔记本电脑已经成了我们生活中的标配。如今&#xff0c;市面上笔记本电脑的款式众多&#xff0c;相信大家对华硕和戴尔并不陌生吧&#xff01;那么&#xff0c;我们该怎么去选择呢&#xff1f;今天小编就给大家介绍华硕和戴尔笔记本哪个好&#…

php检查 session是否存在,检查sessionid已知的PHP会话是否处于活动状态

实际上,您可以将session_id和session_start用于此目的.$ids [135b29ef958a23418f2a804474787305, // active session135b29ef958a23418f2a804474787306, // inactive session135b29ef958a23418f2a804474787305, // active session];foreach($ids as $id){session_id($id);sess…

c++ python混合编程 restful_简单上手nodejs调用c++(c++和js的混合编程)

因为项目的原因&#xff0c;最近经常使用node.js搭RESTful接口。性能还是很不错啦&#xff0c;感觉比Spring Boot之类的要快。而且在不错的性能之外&#xff0c;只要程序结构组织好&#xff0c;别让太多的回调把程序结构搞乱&#xff0c;整体开发效率比Java快的就太多了。如果想…

电脑扫描二维码_线上分享 | 网络工作坊:平板电脑工作术

澳门生产力暨科技转移中心将于9月29日下午3时&#xff0c;举办资讯科技工具应用线上工作坊&#xff0c;讲解平板电脑办公应用&#xff0c;欢迎有兴趣人士报名&#xff0c;名额有限&#xff0c;先到先得。该中心早前已举办是次主题的应用工作坊&#xff0c;坊间反应积极&#xf…