klxf 发表于 2024-11-19 21:48:46

Together - Peder B.Helland

本帖最后由 klxf 于 2025-1-24 14:14 编辑 <br /><br /><html>
<head>
<meta charset="utf-8">
<title>Together - Peder B.Helland</title>
</head>
<body>
       <meta charset="utf-8">
<style>
#papa{position: relative;width:1080px;height:720px;background:#000000;overflow:hidden; margin: 130px 0 30px calc(50% - 620px); box-shadow: 0px 0px 0px 2px #ffffff, 0px 0px 0px 8px #ffffff;z-index: 1;}
#mplayer {position: absolute;
      bottom:2%; left:5px;z-index: 5;
      width: 120px;
      height: 120px;
      cursor: pointer;transition: 0.5s all ease;
}
.pink {transition: 0.1s all ease;background: url('https://pic.imgdb.cn/item/6722de85d29ded1a8c95f6ca.gif')no-repeat center/cover;}
.purple {transition: 0.1s all ease;background: url('https://pic.imgdb.cn/item/6723214fd29ded1a8cfe28f1.png')no-repeat center/cover;}
.zxx-slide {
    width: 100%; height: 100%;
   position: absolute;
}
.zxx-slide-a {cursor: default;
    pointer-events:none;
    position: absolute;   
}
.zxx-slide-a.in {z-index: 2;
    animation-duration: 3s; animation-name: brightnessIn;
    }
.zxx-slide-img {
   width: 100%; height: 100%;
}
@keyframes brightnessIn {
    0%   {filter: brightness(2);}   
100% {filter: brightness(1);}
}
</style>
<div id="papa">
<div id="mplayer" class="pink" > </div>
<zxx-slide >
      <a href class="zxx-slide-a" >
      <img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa81d9f345e8d03738642.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa81d9f345e8d037386f9.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8ec9f345e8d0375f94c.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8ec9f345e8d0375f9b9.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8ec9f345e8d0375fa0f.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8ec9f345e8d0375faa3.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8ec9f345e8d0375f92c.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8eb9f345e8d0375f8fa.gif"></a>
      <a href class="zxx-slide-a" ><img class="zxx-slide-img" alt="" src="https://pic.imgdb.cn/item/65eaa8ab9f345e8d037538b6.gif"></a>            
</zxx-slide>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1393394354" autoplay loop></audio>
</div>
<span id="lrcStr" style="visibility: hidden;">
</span>
<script>
let imgContainer = document.querySelector(".img-container");
setInterval(() => {
   if(!aud.paused){
      let last = imgContainer.firstElementChild;
      last.remove();
      imgContainer.appendChild(last);}
      }, 2500);
aud.addEventListener('play', () => mState());
aud.addEventListener('pause', () => mState());
mplayer.addEventListener('click', () => aud.paused ? (aud.play(),mplayer.classList.remove('purple')) :(aud.pause(),mplayer.classList.add('purple')));
(function() {
/*变量 :mKey - 当前歌词索引;averAdd :平均值补偿*/
let mKey = 0,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 arr="";
      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) => {
      lrca=lrcAr;
      lrcAr.length==mKey+1?lrcb="":lrcb=lrcAr;//判断最后一句歌词
      let Y=String(mKey/2).indexOf(".");
      if (Y == -1)
    {
      0==mKey&&(lrc.innerHTML=lrca);
      lrc.dataset.lrc = lrca;
    lrcc.innerHTML = lrcb;
      lrcc.dataset.lrc = "";
      lrc.style.setProperty('--motion', 'cover1');
      lrc.style.setProperty('--tt', time + 's');
      lrc.style.setProperty('--state', 'running');
    lrcc.style.setProperty('--motion', 'cover2');
      }
    else
    {
      lrc.innerHTML = lrcb;
      lrcc.dataset.lrc = lrca;
      lrc.dataset.lrc = "";
    lrcc.style.setProperty('--motion', 'cover1');
      lrcc.style.setProperty('--tt', time + 's');
      lrcc.style.setProperty('--state', 'running');
    lrc.style.setProperty('--motion', 'cover2');
      }
      mKey += 1;
};
/*函数 :处理当前歌词索引 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 mState = () => aud.paused?(lrc.style.setProperty("--state","paused"),lrcc.style.setProperty("--state","paused")):(lrc.style.setProperty("--state","running"),lrcc.style.setProperty("--state","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());/*监听查询事件*/
let lrcAr = getLrcAr(lrcStr.innerHTML); /*获得歌词数组*/
})();


var eleZxxSlides = document.querySelectorAll('zxx-slide');
[].slice.call(eleZxxSlides).forEach(function (container) {
    var timerSlide = null;
    var indexSlide = 0;
    container.addEventListener('mouseover', function () {
      clearTimeout(timerSlide);
    });
    container.addEventListener('mouseout', function () {
      clearTimeout(timerSlide);
      funSlide();
    });
    // 对应的元素
    var eleSlides = [].slice.call(container.querySelectorAll('a'));
    var eleButtons = [].slice.call(container.querySelectorAll('button'));
   
var funSlide = function() {
      eleSlides.forEach(function (slide, index) {
            if(!aud.paused) {
                if (indexSlide == index) {
                  slide.classList.add('in');
                  
                } else if (slide.classList.contains('in')) {
                  slide.classList.remove('in');
                }
            }
      });


      timerSlide = setTimeout(function () {
            indexSlide++;
            if (indexSlide == eleSlides.length) {
                indexSlide = 0;
            }
            funSlide();
      }, 5000);
    }

    indexSlide++;
    setTimeout(funSlide, 5000);
});
</script>
</body>
</html>

醉美水芙蓉 发表于 2024-11-20 19:42:28

友友这朵花好漂亮的!

醉美水芙蓉 发表于 2024-11-20 19:42:51

谢谢友友精彩分享!

翁奕童苑 发表于 2024-12-6 17:26:19

这个作品漂亮!!!!

klxf 发表于 2024-12-6 21:18:00

翁奕童苑 发表于 2024-12-6 17:26
这个作品漂亮!!!!

谢谢翁奕童苑友友支持与鼓励:)
页: [1]
查看完整版本: Together - Peder B.Helland