当前位置:首页 > 瞎搞 > 正文内容

网页歌词同步代码

admin15年前 (2010-12-28)瞎搞1984

实现网页歌词同步的源码,含JS
演示地址:http://www.shnan.net/demo/lrcs/example.htm
 

代码下载:http://pan.baidu.com/share/link?shareid=57954&uk=3643590670

by:ishnan
<html>
<head>
<STYLE type=text/css>
TD { FONT-SIZE: 9pt; LINE-HEIGHT: 20px; }
BODY{
FONT-SIZE: 9pt;
LINE-HEIGHT: 10px;
}
#lrcollbox td, #lrcollbox font {font-family: arial; font-size: 15px;}
#lrcoll td { color:#0040a0; cursor: default; }
#lrcbox { color:#33FF33 }
#lrcfilter { filter: alpha(opacity=0) }
#lrcbc { color:#FF0000 }
</STYLE>
</head>
<script language="JavaScript">
self.moveTo(0,0);
self.resizeTo(screen.availWidth,screen.availHeight);
</script>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<span id="lrcdata">
<!--[ti:]
[ar:]
[al:]
[by:]
[00:00.01]你让我感动(抒情版)
[00:06.00]
[00:09.00]陈思思
[00:12.00]* * * * *
[00:18.00]你让我心动
[00:21.00]你让我感动
[00:25.00]你让我撒满一路
[00:28.00]芬芳的影踪
[00:32.00]温情在流动
[00:36.00]热情来相拥
[00:39.00]一份真的关怀
[00:42.00]你不说我也懂
[00:46.00]* *
[00:53.00]你让我心动
[00:57.00]你让我感动
[01:00.00]你让我撒满一路
[01:04.00]芬芳的影踪
[01:07.00]温情在流动
[01:11.00]热情来相拥
[01:14.00]一份真的关怀
[01:18.00]你不说我也懂
[01:22.00]* *
[01:25.00]祝福你每天每分钟
[01:28.00]都有开心的笑容
[01:32.00]平凡的生活平凡中
[01:35.00]活得快乐又放松
[01:39.00]祝福你每天每分钟
[01:43.00]坚强又从容
[01:46.00]我就在你的掌声中
[01:49.00]有那做不完的梦
[01:54.00]...MUSIC...
[02:16.00]你让我心动
[02:20.00]你让我感动
[02:23.00]你让我撒满一路
[02:27.00]芬芳的影踪
[02:30.00]温情在流动
[02:34.00]热情来相拥
[02:37.00]一份真的关怀
[02:41.00]你不说我也懂
[02:45.00]* *
[02:48.00]祝福你每天每分钟
[02:51.00]都有开心的笑容
[02:55.00]平凡的生活平凡中
[02:58.00]活得快乐又放松
[03:02.00]祝福你每天每分钟
[03:06.00]坚强又从容
[03:09.00]我就在你的掌声中
[03:12.00]有那做不完的梦
[03:16.00]祝福你每天每分钟
[03:20.00]忘了忧伤忘了痛
[03:23.00]走过了太多风和雨
[03:26.00]只求与你心相通
[03:30.00]祝福你每天每分钟
[03:34.00]希望在手中
[03:37.00]就算那岁月太匆匆
[03:40.00]迎来好花遍地红
[03:45.00]* *
[03:48.00]你让我心动 你让我感动
[03:55.00]你让我心动 你让我感动
[04:02.00]你让我心动 你让我感动
[04:09.00]你让我心动 你让我感动
[04:16.00]你让我心动 你让我感动
[04:23.00]你让我心动 你让我感动
[04:30.00]你让我心动 你让我感动
[04:37.00]你让我心动
[04:40.16]
[04:40.29]~完~
[04:40.67]
[04:41.03]Wwww.ShangNan.Org[04:41.32]
[04:41.55]尚楠保有权利-->

</span>
<center>
<object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" id="aboutplayer" width="460" height="66">
<param name="url" value="gequ/1.mp3">
<param name="volume" value="100">
<param name="enablecontextmenu" value="0">
<param name="enableerrordialogs" value="0">
</object>
<div id="lrcollbox" style="overflow:hidden; height:300; width:460; background-color:#000;">
<table border="0" cellspacing="0" cellpadding="0" width="100%" id="lrcoll" style="position:relative; top: -15px;" oncontextmenu="return false;">
<tr><td nowrap height="20" align="center" id="lrcwt1"></td></tr>
<tr><td nowrap height="20" align="center" id="lrcwt2"></td></tr>
<tr><td nowrap height="20" align="center" id="lrcwt3"></td></tr>
<tr><td nowrap height="20" align="center" id="lrcwt4"></td></tr>
<tr><td nowrap height="20" align="center" id="lrcwt5"></td></tr>
<tr><td nowrap height="20" align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td nowrap height="16"><span id="lrcwt6" style="height:16"></span></td></tr>
<tr style="position:relative; top: -20px; z-index:6"><td nowrap height="16"><div id="lrcfilter" style="overflow:hidden; width:100%; color:#0040a0; height:16"></div></td></tr>
</table>
</td></tr>
<tr style="position:relative; top: -15px"><td nowrap height="20" align="center">
<table border="0" cellspacing="0" cellpadding="0">
<tr><td nowrap height="16"><span id="lrcbox" style="height:16"></span></td></tr>
<tr style="position:relative; top: -20px; z-index:6;"><td nowrap height="16"><div id="lrcbc" style="overflow:hidden; height:16; width:0;"></div></td></tr>
</table>
</td></tr>
<tr style="position:relative; top: -20px;"><td nowrap height="20" align="center" id="lrcwt7"></td></tr>
<tr style="position:relative; top: -20px;"><td nowrap height="20" align="center" id="lrcwt8"></td></tr>
<tr style="position:relative; top: -20px;"><td nowrap height="20" align="center" id="lrcwt9"></td></tr>
<tr style="position:relative; top: -20px;"><td nowrap height="20" align="center" id="lrcwt10"></td></tr>
</table>
</div>
</center>
<script language="JavaScript">
var lrc0;
var lrc1;
var min;
lrcobj = new lrcClass(lrcdata.innerHTML.slice(4,-3));


function lrcClass(tt)
{
  this.inr = [];
  this.min = [];


  this.oTime = 0;


  this.dts = -1;
  this.dte = -1;
  this.dlt = -1;
  this.ddh;
  this.fjh;


  lrcbc.style.width = 0;
 
  tt = tt.replace(/\[\:\][^$\n]*(\n|$)/g,"$1");
  tt = tt.replace(/\[[^\[\]\:]*\]/g,"");
  tt = tt.replace(/\[[^\[\]]*[^\[\]\d]+[^\[\]]*\:[^\[\]]*\]/g,"");
  tt = tt.replace(/\[[^\[\]]*\:[^\[\]]*[^\[\]\d\.]+[^\[\]]*\]/g,"");
  tt = tt.replace(/<[^<>]*[^<>\d]+[^<>]*\:[^<>]*>/g,"");
  tt = tt.replace(/<[^<>]*\:[^<>]*[^<>\d\.]+[^<>]*>/g,"");


  while(/\[[^\[\]]+\:[^\[\]]+\]/.test(tt))
  {
    tt = tt.replace(/((\[[^\[\]]+\:[^\[\]]+\])+[^\[\r\n]*)[^\[]*/,"\n");
    var zzzt = RegExp.$1;
    /^(.+\])([^\]]*)$/.exec(zzzt);
    var ltxt = RegExp.$2;
    var eft = RegExp.$1.slice(1,-1).split("][");
    for(var ii=0; ii<eft.length; ii++)
    {
      var sf = eft[ii].split(":");
      var tse = parseInt(sf[0],10) * 60 + parseFloat(sf[1]);
      var sso = { t:[] , w:[] , n:ltxt }
      sso.t[0] = tse-this.oTime;
      this.inr[this.inr.length] = sso;
    }
  }
  this.inr = this.inr.sort( function(a,b){return a.t[0]-b.t[0];} );


  for(var ii=0; ii<this.inr.length; ii++)
  {
    while(/<[^<>]+\:[^<>]+>/.test(this.inr[ii].n))
    {
      this.inr[ii].n = this.inr[ii].n.replace(/<(\d+)\:([\d\.]+)>/,"%=%");
      var tse = parseInt(RegExp.$1,10) * 60 + parseFloat(RegExp.$2);
      this.inr[ii].t[this.inr[ii].t.length] = tse-this.oTime;
    }
    lrcbc.innerHTML = "<font>"+ this.inr[ii].n.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/%=%/g,"</font><font>") +"</font>";
    var fall = lrcbc.getElementsByTagName("font");
    for(var wi=0; wi<fall.length; wi++)
      this.inr[ii].w[this.inr[ii].w.length] = fall[wi].offsetWidth;
    this.inr[ii].n = lrcbc.innerText;
  }


  for(var ii=0; ii<this.inr.length-1; ii++)
    this.min[ii] = Math.floor((this.inr[ii+1].t[0]-this.inr[ii].t[0])*10);
  this.min.sort(function(a,b){return a-b});
  min = this.min[0]/2;


  this.run = function(tme)
  {
    if(tme<this.dts || tme>=this.dte)
    {
      var ii;
      for(ii=this.inr.length-1; ii>=0 && this.inr[ii].t[0]>tme; ii--){}
      if(ii<0) return;
      this.ddh = this.inr[ii].t;
      this.fjh = this.inr[ii].w;
      this.dts = this.inr[ii].t[0];
      this.dte = (ii<this.inr.length-1)?this.inr[ii+1].t[0]:aboutplayer.currentMedia.duration;
 
      lrcwt1.innerText = this.retxt(ii-6);
      lrcwt2.innerText = this.retxt(ii-5);
      lrcwt3.innerText = this.retxt(ii-4);
      lrcwt4.innerText = this.retxt(ii-3);
      lrcwt5.innerText = this.retxt(ii-2);
      lrcwt6.innerText = this.retxt(ii-1);
      lrcfilter.innerText = this.retxt(ii-1);
      lrcwt7.innerText = this.retxt(ii+1);
      lrcwt8.innerText = this.retxt(ii+2);
      lrcwt9.innerText = this.retxt(ii+3);
      lrcwt10.innerText = this.retxt(ii+4);
     
      this.print(this.retxt(ii));
      if(this.dlt==ii-1)
      {
        clearTimeout(lrc0);
        if(lrcoll.style.pixelTop!=0) lrcoll.style.top = 0;
        golrcoll(0);
        clearTimeout(lrc1);
        lrcfilter.filters.alpha.opacity = 100;
        golrcolor(0);
      }
      else if(parseInt(lrcoll.style.top)!=-20)
      {
        clearTimeout(lrc0);
        lrcoll.style.top = -20;
        clearTimeout(lrc1);
        lrcfilter.filters.alpha.opacity = 0;
      }
      this.dlt = ii;
    }
    var bbw = 0;
    var ki;
    for(ki=0; ki<this.ddh.length && this.ddh[ki]<=tme; ki++)
      bbw += this.fjh[ki];
    var kt = ki-1;
    var sc = ((ki<this.ddh.length)?this.ddh[ki]:this.dte) - this.ddh[kt];
    var tc = tme - this.ddh[kt];
    bbw -= this.fjh[kt] - tc / sc * this.fjh[kt];
    if(bbw>lrcbox.offsetWidth)
      bbw = lrcbox.offsetWidth;
    lrcbc.style.width = Math.round(bbw);
  }


  this.retxt = function(i)
  {
    return (i<0 || i>=this.inr.length)?"":this.inr[i].n;
  }


  this.print = function(txt)
  {
    lrcbox.innerText = txt;
    lrcbc.innerText = txt;
  }


  this.print("王伟航-200840920129");
  var a=new Array("lrcwt1","lrcwt2","lrcwt3","lrcwt4","lrcwt5","lrcwt6","lrcwt7","lrcwt8","lrcwt9","lrcwt10","lrcwt11")
  for(var b=0;b<11;b++)a[b].innerText = "";
  }


function lrcrun()
{
  with(aboutplayer)
  {
    lrcobj.run(controls.currentPosition);
  }
  if(arguments.length==0) setTimeout("lrcrun()",10);
}


function golrcoll(s)
{
  lrcoll.style.top = -(s++)*2;
  if(s<=9)
    lrc0 = setTimeout("golrcoll("+s+")",min*10);
}


function golrcolor(t)
{
  lrcfilter.filters.alpha.opacity = 110-(t++)*10;
  if(t<=10)
    lrc1 = setTimeout("golrcolor("+t+")",min*10);
}
window.onerror = function()
{return true;}
lrcrun();
</script>
</body></html>

扫描二维码推送至手机访问。

版权声明:本文由水墨优化网发布,如需转载请注明出处。

本文链接:https://ishnan.com/post/85.html

分享给朋友:

“网页歌词同步代码” 的相关文章

U盘、硬盘图标及文件夹背景的修改

有些朋友见到其他人的U盘,也许是移动硬盘,硬盘图标、背景很个性!这里把方法告诉大家,当然我也是百度一下,更详细见此处我的百度空间。首先到网上下载几个你喜欢的图片,是ico格式的更好,不是也无所谓了,我把图片格式转换器下载地址放出来了。很简单的转换步骤,在这就不详述了!接着在需要修改盘图标的根目录下面...

赛博QQ去完美去主页,防止篡改主页

赛博QQ去完美去主页,防止篡改主页

赛博QQ是一款非常优秀的QQ辅助软件,但是要求用户强制设置其首页软件本身不错,但是我认为强制用户有那么一点不是很好!在此向大家给出解决方法! 赞助版:功能全,但要设赛博码为首页。(最新版本号为2.8)这个不是很好,为此我发现一个很好解决这个问题的方法,完全不需要去破解原软件,人家编写也是不...

PS磨皮滤镜Topaz 下载

PS磨皮滤镜Topaz 下载

今天给出Photoshop磨皮滤镜Topaz的下载地址,网络上不是很容易找到处理人物脸部皮肤效果非常理想,同时也是用PS作仿手绘的必备,磨皮滤镜Topaz处理效果不用多说直接见下图!磨皮滤镜Topaz选项很简单安装文件破解说明 安装原版至PS滤镜目录下比如D:\Program Files\...

win7旗舰版破解下载

win7旗舰版破解下载

今天闲来看到一个win7主题很漂亮,突发想把系统换成win7接着百度一下:联想官方Windows 7(32位 x86)简体中文旗舰版OEM光盘镜像2.63GB下了不到一小时谁说我的笔记本也是联想,装好依然是30天试用版本,没有KEY激活,百度上的几个说是神key都不行无法激活,下午和朋友聊天无意谈到...

汉王ocr转换到txt 图片转换TXT 读取图片文字3

汉王ocr转换到txt 图片转换TXT 读取图片文字3

继续上篇 批量转换图片格式,批量重命名文件名 读取图片文字2https://ishnan.com/post/68.html下载安装 汉王OCR v6.0简体中文版,下载链接文章底部给出运行汉王OCR v6.0简体中文版,打开选择已转换成好的jpg图片,然后全选记住须全选,不然识别出来的是单...

zblog文章神奇消失?

zblog文章神奇消失?

中午吃晚饭回来,看见有朋友在博客上留言,连忙回复可就在这时奇迹出现了!最近留言列表只有四个,首页也变样了,文章少了一篇。。。ftp原mdb文件,打开一瞧,编号106的文章不见了!而对应的评论依然还在昨天才看过月光博客的《Z-Blog性能优化和评论IP显示》http://www.williamlong...

评论列表

电影爱好者
15年前 (2010-12-30)

写的不错,收藏起来了。
由 602667810 于 2011-1-7 10:38:33 最后编辑

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。