小辣椒 发表于 2022-2-23 22:07

学习黑黑歌词同步高亮制作

<style type="text/css">
.mnBox {
      position: relative;
      margin: 0 auto;
      padding: 35px;
      width: 660px;
      border: none;
      border-top: 6px solid #000;/* 顶部边框样式*/
      border-radius: 10px;
      background: #b3c3c3;
}
.ctBox {
      margin: 0;
      padding: 30px;
      background: #fff;
      min-height: 300px;
      border-radius: 10px;
      
}

.ctBox p,img, h2,button { text-align:center; }




</style>

<div class="mnBox">
      <div class="ctBox">

            <p><img alt="550 height="362"="" src="https://pic.imgdb.cn/item/6216210d2ab3f51d91f0f16b.jpg" /><br></p>
         
                <h2 style="padding-bottom: 10px;">痛彻心扉</h2>
               
                <h2 style="text-align:center;">歌手--小希 (馨予)</h2>


                <pre>
               

                        看见黑黑今天分享的
                        歌词同步高亮制作                     
                        在这个css边框中测试一下
                        感觉这个歌词同步高亮效果
                        加上这个边框特别漂亮
                        这样分享音乐也是不错
                        感谢黑黑又一个精彩分享
                        黑黑你太厉害了 精彩不断!
                        
                        还有一个问题问黑黑老师
                        这个播放器是手动播放
                        我改了自动播放代码 播放器看不见了
                        

                              
         















                </pre>

            <div style="position:absolute; width:120px; left:300px; top: 900px; text-align:center;">

      <p ><font color="#000000" size="2" >

               <marqueescrollamount="2" direction="left" >学习黑黑歌词同步高亮制作</marquee>


   <div style="position:absolute; width:150px; left:-100px; top: 100px; text-align:center;">

            <style type="text/css">
      #lrcDiv { width: 300px; height: 43px; overflow: hidden; position: relative; padding: 8px; }
      #lrcDiv ul, lrcli { margin: 0; padding: 0;}
      #lrcUl { position: absolute; left:10px;top: 0; }
      #lrcUl li { height: 20px; font-size:14px; line-height:20px;left:50px; color: black; list-style-type: none; }
      #myplayer { outline: none; list-style-type: none; }
</style>

<audio id="myplayer" src="https://oss.shandianpan.com/deba64b09196f48dcde864caf63ceee9.mp3" controls="controls"></audio>
<div id="lrcDiv"><ul id="lrcUl"></ul></div>

<script language="javascript">

var lrcAr=[
["00:00.11"," 手动播放"],
["00:03.11"," 痛彻心扉"],
["00:10.48"," 歌手:小希 (馨予)"],
["00:16.76"," LRC编辑:小辣椒"],
["00:21.64"," 怎么能够让我不再想你"],
["00:27.07"," 也许爱你爱到最后只能伤心"],
["00:33.60"," 已经有了离开你的勇气"],
["00:39.83"," 在我的梦里你不是唯一"],
["00:46.26"," 我想要再回到你温暖的怀里"],
["00:53.24"," 感觉你的心跳你的呼吸"],
["00:59.68"," 想到天长地久对于我们"],
["01:04.36"," 渴望而不可及"],
["01:06.75"," 难道命运注定就此分离"],
["01:13.83"," 啊。。。"],
["01:16.91"," 爱你痛彻我心扉"],
["01:22.56"," 给了你仅有的一片天"],
["01:29.03"," 回忆的碎片撞翻我心中思念的火蕊"],
["01:35.95"," 燃烧我整座的堡垒"],
["01:42.15"," 啊。。。"],
["01:44.73"," 爱你痛彻我心扉"],
["01:49.31"," 少了你还残留一片天"],
["01:55.45"," 我想我只会紧握住手中凋零的玫瑰"],
["02:02.83"," 品尝你赐给的泪水"],
["02:08.91"," 或许你曾为我流泪"],
["02:15.44"," 如今你让我痛彻心扉"],
["02:24.03"," LRC编辑:小辣椒"],
["02:48.19"," 我想要再回到你温暖的怀里"],
["02:55.01"," 感觉你的心跳你的呼吸"],
["03:01.24"," 想到天长地久对于我们"],
["03:05.87"," 渴望而不可及"],
["03:08.22"," 难道命运注定就此分离"],
["03:15.46"," 啊。。。"],
["03:18.50"," 爱你痛彻我心扉"],
["03:24.18"," 给了你仅有的一片天"],
["03:30.36"," 回忆的碎片撞翻我心中思念的火蕊"],
["03:37.54"," 燃烧我整座的堡垒"],
["03:43.55"," 啊。。。"],
["03:46.38"," 爱你痛彻我心扉"],
["03:51.02"," 少了你还残留一片天"],
["03:57.20"," 我想我只会紧握住手中凋零的玫瑰"],
["04:04.53"," 品尝你赐给的泪水"],
["04:10.56"," 或许你曾为我流泪"],
["04:17.09"," 如今你让我痛彻心扉"],
["04:27.51"," 谢谢欣赏"]
];
var myaud = document.getElementById('myplayer'); //播放器标识
var lrcUl = document.getElementById('lrcUl'); //歌词显示元素标识
//处理lrc歌词数组:时间转换成秒、歌词放入li标签
for(j=0; j<lrcAr.length; j++){
      lrcAr = toSec(lrcAr);
      lrcUl.innerHTML += "<li id='li" + lrcAr + "'>" + lrcAr + "</li>";
}
//lrc时间信息转为秒
function toSec(lrcTime) {
      let tmpAr = lrcTime.split(':');
      lrcTime = tmpAr * 60 + parseInt(tmpAr);
      return lrcTime;
}
//同步高亮、翻滚歌词
myaud.ontimeupdate = function() {
      let tt = this.currentTime;
      for(j=0; j<lrcAr.length; j++){
                if(tt > lrcAr){
                        if(j > 0){
                              let idxLast = lrcAr;
                              document.getElementById("li" + idxLast).style.color = "black";
                              lrcUl.style.top ="-" + (j * 20 - 20) + "px";
                        }
                        let idx = lrcAr;
                        document.getElementById("li" + idx).style.color = "red";
                }
      }
}
// 播放结束重置歌词样式
myaud.onended = function() {
      document.getElementById("li" + lrcAr).style.color = "black";
      lrcUl.style.top = 0;
      this.play();
}

</script>

<div style="position:absolute; width:150px; left:65px; top: 180px; text-align:center;">
                <p>小辣椒2022 02 23</p>
            </div>
         </div>
      </div>
</div>
</script>

小辣椒 发表于 2022-2-23 22:08

@马黑黑

黑黑,这个我也是自己瞎捣鼓的,播放器不能改自动播放,改了播放器没有了

加林森 发表于 2022-2-23 22:26

小辣椒厉害啊,制作得很漂亮。{:4_187:}

小辣椒 发表于 2022-2-23 22:32

加林森 发表于 2022-2-23 22:26
小辣椒厉害啊,制作得很漂亮。

队长好,还没有改成功自动播放,要黑黑来指导了

加林森 发表于 2022-2-23 22:41

小辣椒 发表于 2022-2-23 22:32
队长好,还没有改成功自动播放,要黑黑来指导了

已经同步了啊

小辣椒 发表于 2022-2-23 22:45

加林森 发表于 2022-2-23 22:41
已经同步了啊

现在是手动播放,最好可以自动播放

加林森 发表于 2022-2-23 22:48

小辣椒 发表于 2022-2-23 22:45
现在是手动播放,最好可以自动播放

老黑说过想变成自动,就取消应该什么代码,我忘记了。你去看看吧。

红影 发表于 2022-2-23 23:03

亲爱的厉害,灵活运用这个歌词同步{:4_199:}

马黑黑 发表于 2022-2-23 23:08

小辣椒 发表于 2022-2-23 22:08
@马黑黑

黑黑,这个我也是自己瞎捣鼓的,播放器不能改自动播放,改了播放器没有了

代码有些小问题,还有点凌乱。需要重新组织一下:

<style type="text/css">

.mnBox { position: relative; margin: 0 auto; padding: 35px; width: 660px; border: none; border-top: 6px solid #000; border-radius: 10px; background: #b3c3c3; }
.ctBox { margin: 0; padding: 30px; background: #fff; min-height: 300px; border-radius: 10px; }
.ctBox p,img, h2,button { text-align:center; }
#lrcDiv { margin: auto; width: 300px; height: 43px; overflow: hidden; position: relative; padding: 8px; text-align:center; }
#lrcDiv ul, lrcli { margin: 0; padding: 0;}
#lrcUl { position: absolute; left:10px;top: 0; }
#lrcUl li { height: 20px; font-size:14px; line-height:20px;left:50px; color: black; list-style-type: none; }
#myplayer { outline: none; list-style-type: none; }

</style>

<div class="mnBox">
        <div class="ctBox">
                <p style="text-align:center;"><img alt="550" height="362" src="https://pic.imgdb.cn/item/6216210d2ab3f51d91f0f16b.jpg" /><br></p>
                <h2 style="padding-bottom: 10px;">痛彻心扉</h2>
                <h2 style="text-align:center;">歌手--小希 (馨予)</h2>
                <pre>

                        看见黑黑今天分享的
                        歌词同步高亮制作                     
                        在这个css边框中测试一下
                        感觉这个歌词同步高亮效果
                        加上这个边框特别漂亮
                        这样分享音乐也是不错
                        感谢黑黑又一个精彩分享
                        黑黑你太厉害了 精彩不断!
                        
                        还有一个问题问黑黑老师
                        这个播放器是手动播放
                        我改了自动播放代码 播放器看不见了
                        
                </pre>
                <p style="margin: auto; width:120px; text-align:center; font-size:14px; color:#000;"><marqueescrollamount="2" direction="left" >学习黑黑歌词同步高亮制作</marquee></p>
                <p style="text-align:center;"><audio id="myplayer" src="https://oss.shandianpan.com/deba64b09196f48dcde864caf63ceee9.mp3" controls="controls" autoplay="autoplay"></audio></p>
                <div id="lrcDiv"><ul id="lrcUl"></ul></div>
                <p style="margin: 20px; text-align:center;">小辣椒2022 02 23</p>
        </div>
</div>

<script language="javascript">

var lrcAr = [
["00:00.11"," 手动播放"],
["00:03.11"," 痛彻心扉"],
["00:10.48"," 歌手:小希 (馨予)"],
["00:16.76"," LRC编辑:小辣椒"],
["00:21.64"," 怎么能够让我不再想你"],
["00:27.07"," 也许爱你爱到最后只能伤心"],
["00:33.60"," 已经有了离开你的勇气"],
["00:39.83"," 在我的梦里你不是唯一"],
["00:46.26"," 我想要再回到你温暖的怀里"],
["00:53.24"," 感觉你的心跳你的呼吸"],
["00:59.68"," 想到天长地久对于我们"],
["01:04.36"," 渴望而不可及"],
["01:06.75"," 难道命运注定就此分离"],
["01:13.83"," 啊。。。"],
["01:16.91"," 爱你痛彻我心扉"],
["01:22.56"," 给了你仅有的一片天"],
["01:29.03"," 回忆的碎片撞翻我心中思念的火蕊"],
["01:35.95"," 燃烧我整座的堡垒"],
["01:42.15"," 啊。。。"],
["01:44.73"," 爱你痛彻我心扉"],
["01:49.31"," 少了你还残留一片天"],
["01:55.45"," 我想我只会紧握住手中凋零的玫瑰"],
["02:02.83"," 品尝你赐给的泪水"],
["02:08.91"," 或许你曾为我流泪"],
["02:15.44"," 如今你让我痛彻心扉"],
["02:24.03"," LRC编辑:小辣椒"],
["02:48.19"," 我想要再回到你温暖的怀里"],
["02:55.01"," 感觉你的心跳你的呼吸"],
["03:01.24"," 想到天长地久对于我们"],
["03:05.87"," 渴望而不可及"],
["03:08.22"," 难道命运注定就此分离"],
["03:15.46"," 啊。。。"],
["03:18.50"," 爱你痛彻我心扉"],
["03:24.18"," 给了你仅有的一片天"],
["03:30.36"," 回忆的碎片撞翻我心中思念的火蕊"],
["03:37.54"," 燃烧我整座的堡垒"],
["03:43.55"," 啊。。。"],
["03:46.38"," 爱你痛彻我心扉"],
["03:51.02"," 少了你还残留一片天"],
["03:57.20"," 我想我只会紧握住手中凋零的玫瑰"],
["04:04.53"," 品尝你赐给的泪水"],
["04:10.56"," 或许你曾为我流泪"],
["04:17.09"," 如今你让我痛彻心扉"],
["04:27.51"," 谢谢欣赏"]
];
var myaud = document.getElementById('myplayer'); //播放器标识
var lrcUl = document.getElementById('lrcUl'); //歌词显示元素标识
//处理lrc歌词数组:时间转换成秒、歌词放入li标签
for(j=0; j<lrcAr.length; j++){
      lrcAr = toSec(lrcAr);
      lrcUl.innerHTML += "<li id='li" + lrcAr + "'>" + lrcAr + "</li>";
}
//lrc时间信息转为秒
function toSec(lrcTime) {
      let tmpAr = lrcTime.split(':');
      lrcTime = tmpAr * 60 + parseInt(tmpAr);
      return lrcTime;
}
//同步高亮、翻滚歌词
myaud.ontimeupdate = function() {
      let tt = this.currentTime;
      for(j=0; j<lrcAr.length; j++){
                if(tt > lrcAr){
                        if(j > 0){
                              let idxLast = lrcAr;
                              document.getElementById("li" + idxLast).style.color = "black";
                              lrcUl.style.top ="-" + (j * 20 - 20) + "px";
                        }
                        let idx = lrcAr;
                        document.getElementById("li" + idx).style.color = "red";
                }
      }
}
// 播放结束重置歌词样式
myaud.onended = function() {
      document.getElementById("li" + lrcAr).style.color = "black";
      lrcUl.style.top = 0;
      this.play();
}

</script>

马黑黑 发表于 2022-2-23 23:17

加林森 发表于 2022-2-23 22:48
老黑说过想变成自动,就取消应该什么代码,我忘记了。你去看看吧。

不是这样的,我说的是循环播放。自动播放在 audio 代码加 autoplay="autoplay",或在JS代码加入:

或 myaud.autoplay = true;
或 myaud.play();

加林森 发表于 2022-2-23 23:20

马黑黑 发表于 2022-2-23 23:17
不是这样的,我说的是循环播放。自动播放在 audio 代码加 autoplay="autoplay",或在JS代码加入:

或...

嗯嗯,下就的制作一个是成功了吧。

小辣椒 发表于 2022-2-23 23:20

黑黑这个自动播放修改好了,谢谢,我可以发上去分享了。{:4_187:}

杨柳青 发表于 2022-2-23 23:25

都是代码专家~~~~{:5_116:}

小辣椒 发表于 2022-2-23 23:30

马黑黑 发表于 2022-2-23 23:17
不是这样的,我说的是循环播放。自动播放在 audio 代码加 autoplay="autoplay",或在JS代码加入:

或...

黑黑,我发现这个手动播放出来是好的,那个自动播放出来有2个声音了

加林森 发表于 2022-2-24 10:19

继续来研究。

马黑黑 发表于 2022-2-24 12:07

小辣椒 发表于 2022-2-23 23:30
黑黑,我发现这个手动播放出来是好的,那个自动播放出来有2个声音了

不会的吧?我这里测试没问题,除非你弄了两个播放器

马黑黑 发表于 2022-2-24 12:09

加林森 发表于 2022-2-23 23:20
嗯嗯,下就的制作一个是成功了吧。

{:5_108:}

加林森 发表于 2022-2-24 12:38

马黑黑 发表于 2022-2-24 12:09


谢谢!{:4_190:}

马黑黑 发表于 2022-2-24 21:21

加林森 发表于 2022-2-24 12:38
谢谢!

客气了

加林森 发表于 2022-2-24 22:07

马黑黑 发表于 2022-2-24 21:21
客气了

应该的应该的
页: [1]
查看完整版本: 学习黑黑歌词同步高亮制作