找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: 老谟深虑

山里娃老师的摄影作品+同步歌词

[复制链接]

115

主题

2万

回帖

9万

积分

超级版主

积分
97343
发表于 2025-7-20 19:06:09 | 显示全部楼层 IP:河北廊坊
老谟深虑 发表于 2025-7-20 09:32
这个不是那个无缝连接的代码,这个是亚伦老师左右倒影音画代码带同步歌词。谢谢老乡的支持和鼓励 ...

其实是叫法不同,原理是一样的,代码也应该相同。

663

主题

3万

回帖

14万

积分

版主

积分
141668
发表于 2025-7-20 19:20:13 | 显示全部楼层 IP:河北石家庄
老谟深虑 发表于 2025-7-20 15:52
谢谢老友的欣赏和鼓励,下午好!

老友,傍晚好。

535

主题

2万

回帖

12万

积分

超级版主

积分
124482
 楼主| 发表于 2025-7-20 19:22:06 | 显示全部楼层 IP:亚太地区
微尘 发表于 2025-7-20 19:20
老友,傍晚好。

        老友明天见!

663

主题

3万

回帖

14万

积分

版主

积分
141668
发表于 2025-7-20 19:24:02 | 显示全部楼层 IP:河北石家庄

愿老友晚上做个甜蜜的好梦。

535

主题

2万

回帖

12万

积分

超级版主

积分
124482
 楼主| 发表于 2025-7-20 19:30:33 | 显示全部楼层 IP:亚太地区
咕咚来了 发表于 2025-7-20 19:06
其实是叫法不同,原理是一样的,代码也应该相同。
  1. <style>
  2.         :root        {--w:1416px;--h:650px;}
  3.   #oBlk {
  4.     margin-left: 50% ; left:calc(-0.44 * var(--w));
  5.     margin-top:100px;
  6.     width: var(--w);
  7.     height: var(--h);
  8.     box-shadow: 3px 3px 10px #000;
  9.     overflow: hidden;
  10.     position: absolute;
  11.   }

  12.   #oBlk::before,
  13.   #oBlk::after {
  14.     position: absolute;
  15.     content: '';
  16.     left: var(--curX0);
  17.     top: 0px;
  18.     width: 100%;
  19.     height: 100%;
  20.     background: url('https://cccimg.com/view.php/d3674774aec627c8d5700993edb95edb.jpg') no-repeat center / cover;
  21.   }                                                           

  22.   #oBlk::after {
  23.     left: var(--curX1);
  24.     transform: scaleX(-1);
  25.   }
  26.   #comp {height:calc(var(--h) + 100px);}
  27. </style>
  28. <div id="oBlk"></div>
  29. <div id="comp"></div>
  30. <script>
  31. {
  32. eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('5 4=6.g;5 7=1.0,8=0,2=0,3=4,b;5 9=()=>{2-=7;3-=7;a(2<=-4)2=4;a(3<=-4)3=4;8=3+(2>=0?1:-1);6.c.d(\'--2\',2+\'e\');6.c.d(\'--3\',8+\'e\');b=f(9)};9();',17,17,'||curX0|curX1|blkWidth|let|oBlk|step|tune|moving|if|raf|style|setProperty|px|requestAnimationFrame|offsetWidth'.split('|'),0,{}))
  33. }  
  34. </script>

复制代码
这个是移动大图代码。

535

主题

2万

回帖

12万

积分

超级版主

积分
124482
 楼主| 发表于 2025-7-20 19:33:15 | 显示全部楼层 IP:亚太地区
咕咚来了 发表于 2025-7-20 19:06
其实是叫法不同,原理是一样的,代码也应该相同。


  1. <div style="position: absolute; left:0px;width:100%;margin-top:120px;">
  2. <style>
  3.   #papa { margin: width: 1286px;height: 620px;background: url(https://pic1.imgdb.cn/item/685cdd5258cb8da5c8724514.jpg) no-repeat center/cover; box-shadow: 2px 2px 8px #000;  overflow: hidden; z-index: 1; position: relative;}
  4. #reflect-right { width:100%;z-index: 2;
  5.        position:absolute;margin: 0px  0px;
  6.     -webkit-box-reflect:left;
  7.    }
  8. .lrc { z-index: 21; position: absolute; top: 20%; left: 41%; width: 740px; height: 350px; overflow: hidden; }
  9. .lrc #ul { width: 100%; padding: 0; list-style: none; transition: 0.3s all ease; margin: 0; }
  10. .lrc #ul li { color: #087E13; font: 300 20px 'YouYuan', sans-serif; transition: .3s all ease; list-style-type: none; text-align: center; display: block; padding: 0 10px; height: 50px; line-height: 50px; margin: 0 auto; cursor: pointer; }
  11. .lrc #ul li.active { transform: scale(1.2); color: #ff0000; font-weight: 650; }
  12. #bfq{position: absolute;width:450px;height: 50px;overflow: hidden; z-index: 20;left: 20%; top:90%;}
  13. .start{color: #087E13;position: absolute; top:12px; left: 0px;}
  14. .end{color: #087E13;position: absolute;top:12px; left: 33%;}
  15. #btn{background: url(https://pic.imgdb.cn/item/675813f6d0e0a243d4e14a48.png) no-repeat 0px 0px/cover;width:50px;height: 50px;left: 15%; top: 0px;position: absolute;z-index: 20;cursor: pointer;}
  16. </style>
  17. <div id="papa">
  18. <marquee  id="m"  behavior="scroll"  scrollamount="8"  height=620>
  19. <img src="https://upfile.mp3.wf/view.php/13032e7adcf4ec65315964ca3a644ab7.jpg"id="reflect-right">
  20. </marquee>
  21. <div id="bfq">
  22. <span class="start">00:00</span><p id="btn"></p><span class="end">00:00</span>
  23. </div>
  24. <div class="lrc">
  25.             <ul id="ul"></ul>
  26.         </div>
  27. </div>
  28. <audio id="aud" src="https://upfile.mp3.wf/view.php/117d925e570018e742db4f4f80fb3e50.mp3" autoplay loop ></audio>
  29. <script>
  30.         var music = document.getElementById('aud');
  31.         var m= document.getElementById('m');

  32. var btn = document.getElementById('btn');
  33.         btn.onclick = function() {
  34.             if (aud.paused) {
  35.                 aud.play();m.start();
  36.                 btn.style.background = 'url(https://pic.imgdb.cn/item/675813f6d0e0a243d4e14a48.png) no-repeat 0px 0px/cover';
  37.                } else {aud.pause();m.stop();
  38.                 btn.style.background = 'url(https://pic.imgdb.cn/item/675813e7d0e0a243d4e14a18.png) no-repeat 0px 0px/cover';
  39. }
  40.      };
  41.   const start = document.querySelector('.start')
  42.    const end= document.querySelector('.end')
  43. function conversion (value) {
  44.     let minute = Math.floor(value / 60)
  45.     minute = minute.toString().length === 1 ? ('0' + minute) : minute
  46.     let second = Math.round(value % 60)
  47.     second = second.toString().length === 1 ? ('0' + second) : second
  48.     return `${minute}:${second}`
  49.   }

  50.   aud.onloadedmetadata = function () {
  51.     end.innerHTML = conversion(aud.duration)
  52.     start.innerHTML = conversion(aud.currentTime)
  53.   }
  54. setInterval(() => {
  55.     start.innerHTML = conversion(aud.currentTime)
  56.    
  57.   }, 1000)

  58. </script>

  59. <script>
  60.         let lrc = `
  61. [00:00.000]雨后彩虹
  62. [00:08.650]LRC:老谟深虑
  63. [00:16.650]乌云沉重卷起风声
  64. [00:20.790]苍穹低垂像泪痕般深沉
  65. [00:25.080]天地似迷雾前路被掩藏
  66. [00:29.220]可心底的信念始终未被撼动
  67. [00:35.69]
  68. [00:41.880]岁月如潮起伏无常
  69. [00:46.290]多少次跌宕才换得一片清朗
  70. [00:50.520]阴霾虽深重却挡不住光
  71. [00:54.630]那雨后的彩虹早已在心中绽放
  72. [01:00.780]雾散尽曙光入眼
  73. [01:04.920]在泪光中看见希望浮现
  74. [01:09.150]那彩虹越过山川
  75. [01:12.720]是岁月写下的绚丽的弧线
  76. [01:18.83]
  77. [01:35.100]这一路荆棘
  78. [01:39.180]终将引你踏上彩虹的阶梯
  79. [01:43.350]心怀光明不惧雨中寒冷
  80. [01:47.610]每场大雨都是前行的恩赐与赠礼
  81. [01:56.14]
  82. [01:56.23]雾散尽曙光入眼
  83. [02:00.45]在泪光中看见希望浮现
  84. [02:04.56]那彩虹越过山川
  85. [02:09.17]是岁月写下的绚丽的弧线
  86. [02:13.43]
  87. [02:14.31]这一路荆棘
  88. [02:15.67]终将引你踏上彩虹的阶梯
  89. [02:21.70]心怀光明不惧雨中寒冷
  90. [02:25.80]每场大雨都是前行的恩赐与赠礼
  91. [02:30.88]
  92. [02:43.83]
  93. `;
  94.         let lrcArr = lrc.split('\n');
  95.         let result = [];
  96.         var audio = document.querySelector("#aud");
  97.         var ul = document.querySelector("#ul");
  98.         var container = document.querySelector(".lrc");

  99.         for (let i = 0; i < lrcArr.length; i++) {
  100.             var lrcData = lrcArr[i].split(']');
  101.             if (lrcData.length < 2) continue;
  102.             var lrcTime = lrcData[0].substring(1);
  103.             var obj = {
  104.                 time: parseTime(lrcTime),
  105.                 word: lrcData[1].trim()
  106.             }
  107.             result.push(obj);
  108.         }

  109.         function parseTime(lrcTime) {
  110.             let lrcTimeArr = lrcTime.split(":");
  111.             return +lrcTimeArr[0] * 60 + parseFloat(lrcTimeArr[1]);
  112.         }

  113.         function getIndex() {
  114.             let time = audio.currentTime;
  115.             for (let i = 0; i < result.length; i++) {
  116.                 if (result[i].time > time) {
  117.                     return i - 1;
  118.                 }
  119.             }
  120.             return result.length - 1;
  121.         }

  122.         function createElements() {
  123.             let fragment = document.createDocumentFragment();

  124.             for (let i = 0; i < result.length; i++) {
  125.                 let li = document.createElement("li");
  126.                 li.innerText = result[i].word;

  127.                 li.addEventListener("click", function () {
  128.                     audio.currentTime = result[i].time;
  129.                     setOffset();
  130.                 });

  131.                 fragment.appendChild(li);
  132.             }

  133.             ul.appendChild(fragment);
  134.         }

  135.         createElements();
  136.         let containerHeight = container.clientHeight;
  137.         let liHeight = ul.children[0]?.clientHeight || 50;
  138.         let minOffset = 0;
  139.         let maxOffset = ul.clientHeight - containerHeight;

  140.         function setOffset() {
  141.             const index = getIndex();
  142.             if (index < 0) return;

  143.             const liHeight = ul.children[0]?.clientHeight || 50;
  144.             let offset = liHeight * index - containerHeight / 2 + liHeight / 2;

  145.             offset = Math.max(minOffset, Math.min(offset, maxOffset));

  146.             ul.style.transform = `translateY(${-offset}px)`;

  147.             ul.querySelectorAll('.active').forEach(li => li.classList.remove('active'));
  148.             if (index < ul.children.length) {
  149.                 ul.children[index].classList.add('active');
  150.             }
  151.         }

  152.         audio.addEventListener("timeupdate", setOffset);
  153. </script>

  154. </div>
  155. <div style="height:960px;"></div>
复制代码
这个是左右倒影加同步歌词代码。

489

主题

4万

回帖

15万

积分

版主

积分
156474
发表于 2025-7-21 03:44:02 | 显示全部楼层 IP:山东
大哥的精美代码音画多彩多样!向大哥学习

535

主题

2万

回帖

12万

积分

超级版主

积分
124482
 楼主| 发表于 2025-7-21 07:02:04 | 显示全部楼层 IP:亚太地区
筱亭 发表于 2025-7-21 03:44
大哥的精美代码音画多彩多样!向大哥学习

          谢谢老弟的美赞,早上好!

200

主题

2128

回帖

2万

积分

蓬莱仙人

积分
24885
发表于 2025-7-21 15:23:06 | 显示全部楼层 IP:山东临沂
问候老师好!精美代码音画佳作,创意精心制作分享。为您点赞!向您学习!

535

主题

2万

回帖

12万

积分

超级版主

积分
124482
 楼主| 发表于 2025-7-21 15:44:50 | 显示全部楼层 IP:亚太地区
梦景 发表于 2025-7-21 15:23
问候老师好!精美代码音画佳作,创意精心制作分享。为您点赞!向您学习! ...

         谢谢老友的欣赏和鼓励,下午好!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|离退休论坛 ( 浙B2-20100176 )

GMT+8, 2025-9-1 19:28 , Processed in 0.057996 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表