万顷湖 发表于 2026-7-15 06:41

月光-羽泉

本帖最后由 万顷湖 于 2026-7-15 07:04 编辑 <br /><br /><table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_12251503">
<i class="pstatus"></i><br /><br /><div style="position:relative; width:960px;height:600px; overflow:hidden;margin-top:0px;margin-left: 0px;box-shadow: 3px 3px 6px #333;">
<div style="position:absolute;top: 0px;left: 0px;">

<style>
#papa { position: relative;
      margin: 0px 0 0 calc(px);
      width: 960px;height: 600px;
      background: lightgreen url('http://img0.oldkids.cn/upload/2018/11/04/blog_20181104115818297.jpg') no-repeat center/cover;
      box-shadow: 3px 3px 6px #333; }

#photos {position: absolute; width: calc(800% * 9);opacity: 1;animation:animate 50s linear infinite;}
#pa {margin:-20px 0px;width: 480px;height: 800px;position: relative;transform: perspective(480px) rotateY(0deg)rotatex(0deg);overflow:hidden;}
#photos img{float:right;width:480px;height: 800px;position:relative;LEFT:0px;top:0px;overflow:hidden;}
#paa{margin:-800px 480px;width: 480px;height: 800px;position:relative;transform: perspective(480px) rotateY(180deg)rotatex(0deg);overflow:hidden;}
#photoss img {float:right;width:480px;height: 800px;position:relative;LEFT:0px;top:0px;overflow:hidden;}
#photoss {position: absolute; width: calc(800% * 9);opacity: 1;animation:animate 50s linear infinite;}
@keyframes animate {
         0%,20% { right:-800%; }
      25%,30% { right:-700%; }
      35%,40% { right:-600%; }
      45%,50% { right:-500%; }
      55%,60% { right:-400%; }
      65%,70% { right:-300%; }
      75%,80% { right:-200%; }
      85%,90% { right:-100%; }
       95%,100% { right:   0%; }
   }
#dt {   position: absolute;width: 100%;height: 100%; top:0%; left:0%; mix-blend-mode: lighten; }

#mplayer {
      position: absolute;
      width: 960px;
      height: 600px;
      right: 0px;
      top: 0%;
      border-radius: 0%;
      cursor: pointer;
      animation: rot 0s linear infinite;
}

#lrc {position: absolute;top: 540px;left: 50%;
      --state: paused;
      --motion: cover2;
      --tt: 2s;
      --bg: linear-gradient(180deg, hsla(350, 8%, 98%, .85), hsla(357, 96%, 60%, .85));
      transform: translate(-50%);
      font: 1.5em sans-serif;
      color: snow;
      white-space: pre;
      -webkit-background-clip: text;
      filter: drop-shadow(1px 1px 2px hsla(0, 0%, 0%, .95)); }
#lrc::before {
      position: absolute;
      content: attr(data-lrc);
      width: 20%;
      height: 100%;      
      color: transparent;
      overflow: hidden;
      white-space: pre;
      background: var(--bg);
      filter: inherit;
      -webkit-background-clip: text;
      animation: var(--motion) var(--tt) linear forwards;
      animation-play-state: var(--state);
}
@keyframes cover1 { from { width: 0; } to { width: 100%; } }
@keyframes cover2 { from { width: 0; } to { width: 100%; } }
@keyframes rot { to { transform: rotate(1turn); } }

</style>

<div id="papa">

<div id="papa">
<div id="pa" >
<divid="photos" >
<img src="https://free.picui.cn/free/2026/07/14/6a5642739f209.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56acad446f9.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56ad59999cd.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56adc8e7ec6.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b2cbb2e64.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b22d13171.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b1e9d9761.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b179738be.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56ad59999cd.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56adc8e7ec6.jpeg" />
</div>
</div>
<divid="paa">
<divid="photoss">
<img src="https://free.picui.cn/free/2026/07/14/6a5642739f209.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56acad446f9.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56ad59999cd.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56adc8e7ec6.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b2cbb2e64.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b22d13171.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b1e9d9761.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56b179738be.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56ad59999cd.jpeg" />
<img src="https://free.picui.cn/free/2026/07/15/6a56adc8e7ec6.jpeg" />
</div>
</div>
<div id='dt' ><img id="testImg" src="https://img1.oldkids.cn/upload/2025/05/07/blog_260848550_20250507194433607.gif" width="100%" height="100%"></div>
      <div id="lrc" data-lrc=""> </div>
      <img id="mplayer" src="http://img2.oldkids.cn/upload/2024/05/13/blog_260848550_20240513105059752.png" alt="" />
      <audio id="aud" src="https://www.joy127.com/url/155472.mp3" loop autoplay></audio>
</div>

<script>
(function() {
/*原始lrc歌词*/
let lrcStr = `

花潮论坛

月光洒在每个人心上

为想家的人照着亮

哦离开太久的故乡 和老去的爹娘

哦迎着月色散落的光芒

把古老的歌谣轻轻唱

哦无论走到任何的地方 都别忘了故乡

是什么力量让我们坚强

是什么离去让我们悲伤

是什么付出让我们坦荡

是什么结束让我们成长

哦迎着月色散落的光芒

把古老的歌谣轻轻唱

啊无论走到任何的地方 都别忘了故乡

是什么力量让我们坚强

是什么离去让我们悲伤

是什么付出让我们坦荡

是什么结束让我们成长

是什么欲望让我们疯狂

是什么距离让我们守望

是什么誓言让我们幻想

是什么风雨让我们流浪

月亮高高挂在了天上

让回家的路有方向

哦离开太久的故乡

好想回去见爹娘

离开了太久的故乡 快快回去见爹娘

花潮论坛

`;

/*变量 :mKey - 当前歌词索引;mFlag :调用关键帧动画索引;averAdd :平均值补偿*/
let mKey = 0, mFlag = true, averAdd = 0.3;

/*函数 :获取每句歌词用时,歌词用时若超过平均值则取平均值,最后一句歌词则取平均值*/
let lrcTime = (ar) => {
      let tmpAr = [];
      for(j = 0; j <ar.length - 1; j ++) {
                if(j !== ar.length - 1) tmpAr = parseFloat((ar - ar).toFixed(1));
      }
      let aver = parseInt(tmpAr.reduce((a,b) => a + b) / (tmpAr.length - 1)) + averAdd;
      tmpAr.push(aver);
      tmpAr.forEach((item,key) => {
                ar = item > aver ? aver : item;
      });
      return ar;
};

/*函数 :从原始lrc歌词获取信息并存入 n*3 数组*/
let getLrcAr = (text) => {
      let lrcAr = [];
      let calcRule = ;
      for(x of text.split('\n')) {
                let ar = [];
                let re = /\d+[\.:]\d+([\.:]\d+)?/g;
                let geci = x.replace(re,'');
                if(geci) {
                        geci = geci.replace(/[\[\]\'\"\t,]s?/g,'');
                        let time = x.match(re);
                        if(time != null) {
                              for(y of time) {
                                        let tmp = y.match(/\d+/g);
                                        let sec = 0;
                                        for(z in tmp) sec += tmp * calcRule;
                                        ar = ;
                                        lrcAr.push(ar);
                              }
                        }
                }
      }
      lrcAr.sort((a,b)=> a - b);
      return(lrcTime(lrcAr));
};

/*函数 :模拟显示同步歌词*/
let showLrc = (time) => {
      let name = mFlag ? 'cover1' : 'cover2';
      lrc.innerHTML = lrcAr;
      lrc.dataset.lrc = lrcAr;
      lrc.style.setProperty('--motion', name);
      lrc.style.setProperty('--tt', time + 's');
      lrc.style.setProperty('--state', 'running');
      mKey += 1;
      mFlag = !mFlag;
};

/*函数 :处理当前歌词索引 mKey*/
let calcKey = () => {
      for (j = 0; j < lrcAr.length; j++) {
                if (aud.currentTime <= lrcAr) {
                        mKey = j - 1;
                        break;
                }
      }
      if (mKey < 0) mKey = 0;
      if (mKey > lrcAr.length - 1) mKey = lrcAr.length - 1;
      let time = lrcAr - (aud.currentTime - lrcAr);
      showLrc(time);
};

/*格式化时间信息*/
let toMin = (val) => {
      if (!val) return '00:00';
      val = Math.floor(val);
      let min = parseInt(val / 60),
      sec = parseFloat(val % 60);
      if (min < 10) min = '0' + min;
      if (sec < 10) sec = '0' + sec;
      return min + ':' + sec;
}

/*函数 :关键帧动画状态切换*/
let mState = () => aud.paused ? (lrc.style.setProperty('--state','paused'),mplayer.style.animationPlayState = 'paused') : (lrc.style.setProperty('--state','running'),mplayer.style.animationPlayState = 'running');

/*监听播放进度*/
aud.addEventListener('timeupdate', () => {
      for (j = 0; j < lrcAr.length; j++) {
                if (aud.currentTime >= lrcAr) {
                        cKey = j;
                        if (mKey === j) showLrc(lrcAr);
                        else continue;
                }
      }
});

aud.addEventListener('pause', () => mState());/*监听暂停事件*/
aud.addEventListener('play', () => mState());/*监听播放事件*/
aud.addEventListener('seeked', () => calcKey());/*监听查询事件*/
mplayer.addEventListener('click', () => { aud.paused ? aud.play() : aud.pause(); });

let lrcAr = getLrcAr(lrcStr); /*获得歌词数组*/
})();
</script></td></tr></table>


梦江南 发表于 2026-7-15 07:56

欣赏老师的精彩音画,早上好!{:4_199:}

梦油 发表于 2026-7-15 14:17

设计的别开生面。赞!

万顷湖 发表于 2026-7-15 19:40

梦江南 发表于 2026-7-15 07:56
欣赏老师的精彩音画,早上好!

我的优点是多吃了几年饭,缺点是学习音画才起步,需要借鉴模仿。谢谢不弃,谢谢扶助。

万顷湖 发表于 2026-7-15 19:40

梦油 发表于 2026-7-15 14:17
设计的别开生面。赞!

我的优点是多吃了几年饭,缺点是学习音画才起步,需要借鉴模仿。谢谢不弃,谢谢扶助。

梦油 发表于 2026-7-15 19:58

万顷湖 发表于 2026-7-15 19:40
我的优点是多吃了几年饭,缺点是学习音画才起步,需要借鉴模仿。谢谢不弃,谢谢扶助。

你的音画做得很好了。

梦江南 发表于 2026-7-15 20:39

万顷湖 发表于 2026-7-15 19:40
我的优点是多吃了几年饭,缺点是学习音画才起步,需要借鉴模仿。谢谢不弃,谢谢扶助。

老师太谦虚了,晚辈惭愧!

红影 发表于 2026-7-15 20:44

漂亮的图片轮播方式,让图图反转两边拉开,很奇妙。图片应该选择一下,最好是竖版的,横版的被这样排布会挤压变形呢,看到里面有几幅图就被挤压了。
不过总图效果很赞,欣赏万顷湖好帖{:4_199:}

万顷湖 发表于 2026-7-16 06:56

红影 发表于 2026-7-15 20:44
漂亮的图片轮播方式,让图图反转两边拉开,很奇妙。图片应该选择一下,最好是竖版的,横版的被这样排布会挤 ...

火眼精睛,无所遁形,谢谢指导。

红影 发表于 2026-7-17 19:54

万顷湖 发表于 2026-7-16 06:56
火眼精睛,无所遁形,谢谢指导。

不客气啊,一起开心玩{:4_187:}
页: [1]
查看完整版本: 月光-羽泉