|
楼主 |
发表于 2024-10-29 18:25:16
|
显示全部楼层
IP:湖北
- <style>
- .lrcShow{font:bold 3em serif;position:absolute;width:80%;height:2em;bottom:5px;left:20%;color:hsl(60,100%,40%);filter:drop-shadow(1px 1px 1px white);letter-spacing:2px;--aniName:bgMove1;--durTime:100ms;--aniPlayState:running;cursor:pointer;}.lrcShow::before{position:absolute;content:attr(data-lrc);width:0;height:100%;left:0;top:0;color:transparent;color:darkred;background-image:linear-gra**nt(60deg,hsl(0,100%,50%),hsl(60,100%,50%),hsl(120,100%,50%),hsl(180,100%,50%),hsl(240,100%,90%));-webkit-background-clip:text;overflow:hidden;white-space:nowrap;animation:var(--aniName) var(--durTime) linear forwards;animation-play-state:var(--aniPlayState);}@keyframes bgMove1{from{width:0;}to{width:100%;}}@keyframes bgMove0{from{width:0;}to{width:100%;}}
- #oBlk {
- width:800px;height:1150px;margin:40px auto;
- display: grid;background-color:skyblue;
- place-items:center;position:relative;
- grid-template-rows:1100px, 80px;
- grid-template-columns:100%;
- box-shadow:3px 3px 8px darkgray;
- overflow:hidden;border-radius:24px;
- font-size:12px;padding:10px;
- }
- #img_area {
- width:100%;height:100%;
- display: grid;place-items:center;
- grid-template-rows:repeat(5, 1fr);
- grid-template-columns:repeat(5, 1fr);
- }
- #img_area img {overflow:hidden; border-radius:5%;}
- #img_area .roundGrid {
- width:144px;height:192px;cursor:pointer;
- margin-bottom:8px;
- }
- #img_area .roundGrid img{
- width:100%;
- }
- #img_area .roundGrid span{
- display:none;
- }
- #img_area .midGrid {
- width:450px; height:600px;
- grid-area: 2 / 2 / span 3 / span 3 ;
- /***************************************
- grid-column-start: 2;
- grid-column-end: 5;
- grid-row-start: 2;
- grid-row-end: 6;
- ***************************************/
- display:grid;
- place-items:center;
- }
- #img_area .midGrid img {
- width:100%;
- }
- #lrc_area {
- grid-column-start: 1;
- grid-column-end: 2;
- grid-row-start: 2;
- grid-row-end: 3;
- display: grid;place-items:center;
- }
- .lrcShow{
- font-size:36px;bottom:0px;font-family:楷体;
- }
- </style>
- <!--
- -->
- <div id="oBlk">
- <div id="img_area"></div>
- <div id="lrc_area"><div class="lrcShow" data-lrc="点击启动播放"></div></div>
- </div>
- <script>
- {
- var lrcPlayerY=function(){return this.init.apply(this,arguments)};lrcPlayerY.prototype={constructor:lrcPlayerY,init:function(opts){lyricTxt=opts.lrcTxt.replace(/(^\s*)|(\s*$)/g,'');this.audioCtrl=document.getElementById(opts.audioCtrl);this.lrcShowObj=document.querySelector('.lrcShow');this.lrcVec=this.handleLrc(lyricTxt);this.genPlayer(opts.audioURL)},handleLrc:function(lyricTxt){var parts=lyricTxt.replace(/(^\s*)|(\s*$)/g,"").split(/\r|\n|\r\n/);var lrcs=new Array();for(let index=0;index<parts.length;index++){let chkTime=parts[index].match(/\[\d{1,2}:\d{2}.\d{1,3}\]|\[\d{1,2}:\d{2}\]/g);if(chkTime){tIdx=parts[index].lastIndexOf(']');if(tIdx>0)lrcTxt=parts[index].substr(tIdx+1);for(m=0;m<chkTime.length;m++){ta=chkTime[m].substr(1).replace(']','').split(/:/);_0=(+ta[0])*60+(+ta[1]);if(lrcs.length==0&&_0!=0){lrcs.push({seconds:0,words:'\u00A9\u0020\u0020\u4e5f\u66fe\u5e74\u8f7b'})}lrcs.push({seconds:_0,words:lrcTxt})}}}return lrcs.sort(function(a,b){return(a.seconds-b.seconds)})},showLrc:function(durTime){this.lrcShowObj.innerHTML=this.lrcShowObj.dataset.lrc=this.lrcVec[this.idx].words;this.lrcShowObj.style.setProperty('--aniName','bgMove'+(this.idx%2));this.lrcShowObj.style.setProperty('--durTime',durTime+'ms');this.lrcShowObj.style.setProperty('--aniPlayState','running');this.idx++},genPlayer:function(mUrl){this.mObj=document.createElement("audio");this.mObj.loop=false;this.mObj.muted=false;this.mObj.autoplay=true;this.mObj.src=mUrl;this.lrcShowObj.appendChild(this.mObj);var that=this;var turn=0;this.idx=0;this.mObj.addEventListener('ended',function(){that.idx=0;this.play()});this.mObj.addEventListener('play',function(){that.lrcShowObj.style.setProperty('--aniPlayState','running')});this.mObj.addEventListener('pause',function(){if(that.idx==1&&this.currentTime<1){that.mObj.play();return false}that.lrcShowObj.style.setProperty('--aniPlayState','paused')});this.mObj.addEventListener('error',function(){console.log("audio wrong, remove play start event");that.lrcShowObj.style.display='none';that.lrcShowObj.removeChild(this)});this.mObj.addEventListener('timeupdate',function(){if(that.idx<that.lrcVec.length){if(this.currentTime>=that.lrcVec[that.idx].seconds){if(that.idx<(that.lrcVec.length-1)){that.showLrc((that.lrcVec[that.idx+1].seconds-that.lrcVec[that.idx].seconds)*950)}else{that.showLrc((this.duration-that.lrcVec[that.idx].seconds)*950)}}}});this.lrcShowObj.addEventListener('click',function(){if(that.mObj.paused){that.mObj.play()}else{that.mObj.pause()}})}}
- let pics = [
- "https://img-volc.jianpian.info/14592807/article/20240110/aac29e3c5cb54697b022cb17d1eb602c__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/b4c7831cc1c74c66af21c649fa38ac43__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/5746560bba07428ea951e718d4d7a2be__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/12ea74da24f84c9696a537be97ee692f__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/8e394a765fda46c39dfa389557871d7d__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/38e4103896c34595b25d9b58c37de3d4__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/f3d91f4bec7947568007ca5340583734__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/202e6b07553540ce93f653af2a95711b__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/47c4e713751d4028bdbcdd98e6b9e8bb__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/df8f412c58234cd1a7154762735183aa__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/ad017b34949943ecb5f5f2b9c63902b4__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/1569e158909e4812840c939d29be8db6__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/acb6898e77ee4730aefc01b4b98aa9d4__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/715b9bbf3b054b08896b858e7e5bd883__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/afe52140716346fdbb0d02e0e8d8ab99__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg" ,
- "https://img-volc.jianpian.info/14592807/article/20240110/46a2c66e30c04547bc18718bdf03a399__jpg.heic~tplv-flrovnc8r8-s2-cC-q:0:0:0:0:q0.jpg"
- ];
- let oBlk = document.querySelector('#img_area');
- let divObj = document.createElement('div');
- let imgObj = document.createElement('img');
-
- divObj.className = 'midGrid';
-
- imgObj.src = pics[0];
- imgObj.alt = '';
-
- divObj.appendChild(imgObj);
- oBlk.appendChild(divObj);
- let mIdx = 0;
- for(n = 0; n < pics.length; n++) {
- let divObj = document.createElement('div');
- let imgObj = document.createElement('img');
-
- divObj.className = 'roundGrid';
-
- imgObj.src = pics[n];
- imgObj.dataset.idx = n;
- imgObj.alt = '';
-
- divObj.appendChild(imgObj);
- oBlk.appendChild(divObj);
- }
- let divObjs = oBlk.querySelectorAll('.roundGrid');
- for(n = 0; n < divObjs.length; n++) {
- divObjs[n].onclick = function(e) {
- oBlk.querySelector('.midGrid img').src = e.target.src;
- mIdx = e.target.dataset.idx;
- console.log(mIdx);
- }
- }
- let pic_loop = () => {
- mIdx++;
- mIdx >= divObjs.length? mIdx = 0 : mIdx;
- oBlk.querySelector('.midGrid img').src = divObjs[mIdx].querySelector('img').src;
- }
- setInterval(pic_loop, 10000);
- var lrctxt = `
- [00:00.00] 作词 : 张名河\n[00:01.00] 作曲 : 孟庆云\n[00:07.63]花桥碧水弯\n[00:09.80]江堤柳丝长\n[00:12.76]微风轻吻荷塘\n[00:15.72]醉我江南水乡\n[00:18.55]\n[00:19.35]竹篙轻轻点\n[00:21.42]小船入画廊\n[00:24.32]一曲丝竹小唱\n[00:26.98]\n[00:27.50]醉我江南水乡\n[00:32.22]\n[00:33.22]江南水乡 人间天堂\n[00:38.95]香喷喷的日子\n[00:44.87]粉嘟嘟的船娘\n[00:50.45]\n[00:51.41]仿佛幽梦弥漫唐宋清香\n[00:57.34]染你一身芬芳\n[01:03.23]\n[01:26.68]花桥碧水弯\n[01:28.79]江堤柳丝长\n[01:31.65]微风轻吻荷塘\n[01:34.61]醉我江南水乡\n[01:37.49]\n[01:38.28]竹篙轻轻点\n[01:40.47]小船入画廊\n[01:43.39]一曲丝竹小唱\n[01:46.35]醉我江南水乡\n[01:51.07]\n[01:52.17]江南水乡 人间天堂\n[01:58.01]香喷喷的日子\n[02:03.82]粉嘟嘟的船娘\n[02:09.25]\n[02:10.48]仿佛幽梦弥漫唐宋清香\n[02:16.36]染你一身芬芳\n[02:21.40]\n[02:22.20]花桥碧水弯\n[02:24.36]江堤柳丝长\n[02:27.32]微风轻吻荷塘\n[02:30.21]醉我江南水乡\n[02:33.18]\n[02:33.86]竹篙轻轻点\n[02:36.05]小船入画廊\n[02:38.99]一曲丝竹小唱\n[02:43.99]\n[02:44.93]醉我江南水乡\n[02:47.99]\n[02:49.11]水乡\n[02:52.25]\n[02:53.45]水乡\n`;
- //
- var opts = {
- lrcTxt:lrctxt,
- audioURL:"https://music.163.com/song/media/outer/url?id=455345728.mp3",
- }
- new lrcPlayerY(opts);
- }
- </script>
复制代码 |
|