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 用隔空投送、接力、随航等连续互通功能来打造系统生…

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…

车辆调度 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;这是…

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

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

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

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

数据库设置_CentOS7 - 设置MySQL数据库

设置MySQL数据库本文介绍如何在CentOS上执行流行的MySQL数据库服务器的基本安装。 MySQL是当今使用最广泛的数据库系统&#xff0c;它可以在许多不同的行业中找到&#xff0c;为动态网站和大型数据仓库等各种产品提供数据存储。准备此配方要求CentOS系统具有有效的网络连接和管…

提出离职后怎么定last day_不管你因为什么离职,用正规的离职方式是你最正确的选择!...

#不管你是因为什么离职&#xff0c;用正规的离职方式离职是你最正确的选择&#xff0c;如果因为不恰当的方式造成与公司的矛盾&#xff0c;可能让你今后会非常被动。书面离职是最具有法律效力的&#xff0c;按照劳动法&#xff0c;你有权在提出正式离职一个月后走人&#xff0c…

人脸识别代码_10行代码实现人脸识别

什么是人脸识别人脸识别&#xff0c;是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流&#xff0c;并自动在图像中检测和跟踪人脸&#xff0c;进而对检测到的人脸进行脸部识别的一系列相关技术&#xff0c;通常也叫做人像识…

ticketvalidationexception票根不符合目标服务_如何在有效降低企业仓储成本的同时不降低企业的总体服务质量目标水平?...

对于企业而言&#xff0c;如何降低仓储成本&#xff0c;同时要保证物流总成本最低和不降低企业的总体服务质量和目标水平的前提下进行&#xff0c;常见的措施有以下几点&#xff1a;一用“先进先出方式&#xff0c;减少仓储物的保管风险。”先进先出是储存管理的准则之一&#…

python科学计算_可视化图解Python科学计算包NumPy

NumPy包是python生态系统中数据分析、机器学习和科学计算的主力。 它极大地简化了向量和矩阵的操作。Python的一些主要软件包依赖于NumPy作为其基础架构的基础部分&#xff08;例如scikit-learn、SciPy、pandas和tensorflow&#xff09;。我们将介绍一些使用NumPy的主要方法&am…

php 导出excel 特殊字符,PHPEXCEL导出,存在特殊字符遇到的问题

[13] > Array([payment_success_at] >[user_name] > ?.琳琳?[remarks] >[product_name] > 香菇[sku_name] > 斤[product_property] > 斤[price_original] > 5.50[price_current] > 5.50[consignee] > ?.琳琳?)以上代码中用户名中存在特殊符号…