亦是金 发表于 2024-4-21 18:07

《思念》 - 梦之旅(跟着小辣椒老师学习制作频谱播放器)

<meta charset="UTF-8">
<style>
#papa {margin: 150px -110px;
        width: 1200px;
        height: 700px;
      border: 6px solid rgba(36, 201, 219,.95);
      border-radius: 20px;
        background:#000000 ;
        no-repeat center/cover;
        box-shadow: 3px 3px 20px #000;
        position: relative;
        display: grid;
        place-items: center;
        user-select: none;
        z-index: 1;
        --opt: .25;
        overflow: hidden;/*溢出:隐藏;*/
}
}
#mb{
        position: absolute;
        width: 100%;
        height: 100%;
        top:0%;   
        opacity: 1;
        z-index: 2;
        background:linear-gradient(0deg, #000000 10%,#Ffffff 11%,rgba(2, 2, 2, 0) 2%,rgba(52, 152, 219, 0) 47%,rgba(2, 2, 2, 0) 90%,#Ffffff 90%,black 1%);
}
#t{
        position: absolute;
        top:0px;
        left:0px;
        width: 0px;
        height: 0px;
        z-index:4;
        mix-blend-mode:screen;
}/*动画 图片1*/
#t1{
        position: absolute;
        top:0%;
        left:0%;
        width: 100%;
        height: 100%;
        z-index:3;
}/*动画 图片2*/
#papa:hover #mplayer { transition: .7s; opacity: .9; }
#mplayer {
        z-index: 80;
        position: absolute;
        top:86.8%; left:54.4%;
        bottom: 5px;
        width: 30px;
        height: 30px;
        border: 0px solid #cccccc;
        border-radius: 0%;
        opacity: 1;
        transition: .7s;
        display: grid;
        place-items: center;
        --disp1: 0; --disp2: 1;
}/*播放器*/
#mplayer::before, #mplayer::after {
        position: absolute;
        content: '';
        border-style: solid;
        border-color: #FFFFFF;
        cursor: pointer;
        transition: .4s;
}
#mplayer::before {
        width: 2px;
        height: 2px;
        left: 2px;
        border-width: 5.5px 4.5px;
        border-color: transparent transparent transparent #FFFFFF;
        opacity: var(--disp1);
}/*播放按钮*/
#mplayer::after {
        width: 2px;
        height: 10px;
      left: 0px;
        border-width: 0 3px 0 3px;
        opacity: var(--disp2);
}/*暂停按钮*/
@keyframes opa { to {opacity: 1;} }
#tmsg {
        position: absolute;
        z-index: 91;
      font: normal 12px sans-serif;
      color: #ffffff;
      top:85%;
      left:40.0%;
}/*播放时间进度*/
#prog {
        position: absolute;z-index: 91;
      width: 12.1%;
      height: 0.3%;
      cursor: pointer;
        top:89.0%;
        left:39.3%;
        color: #cccccc;
        box-shadow: 0px 0px 0.1px 0.1px #000000;
        border-radius: 2px;
}/*播放进度条*/
#papa:hover #fullscreen { display:block ;opacity: 1;}

#wzsd1 { animation: wzsd 0.56s linear infinite ;}
@keyframes wzsd {
from {opacity: 1;filter:hue-rotate(360deg)contrast(180%)brightness(200%);}
50% {opacity: 1;}
to {opacity: 1;filter:hue-rotate(0deg)contrast(140%)brightness(100%);}}
#bt{
        --w: 32%;
        width: var(--w);
        overflow: hidden;
        color: #fff;
        position: absolute;
        left:48.8%;
        top:92%;
        font-size: 15px;
        z-index: 21;
        word-break: keep-all;
        white-space: nowrap;
        animation: bt 20s linear infinite;
}/*滚动播放歌曲名称*/
@keyframes bt {50% { transform: translateX(calc(0% - var(--w))); }}
</style>

<div id="papa">

<span id="fullscreen"> </span>
<div id="mb"></div>
<div id="bt">《 思 念 》 - 梦之旅合唱组合 </div>
<div id="t"><img id="tu" src="飞舞七彩小圆点.gif" width="100%" height="100%"></div>
<div id="t1"><img id="tu1" src="https://ysj147.s3-us-east-1.ossfiles.com/zzsc/gif/sinian5g.gif" width="100%" height="100.6%"></div>
<div id="tmsg">00:00 | 00:00</div>
<divid="prog"></div>
<div id="mplayer"></div>
<divclass="lrc" >
      <div   id="wzsd1"><ul id="ullrc">
       </ul>
      </div>      
</div>
</div>
<audio id="aud" src="https://ysj147.s3-us-east-1.ossfiles.com/ltdgs02/0614.mp3" loop autoplay></audio>

<style type="text/css">
.lrc{
        z-index: 20;
        width: 100%;
        height: 120px;
        overflow: hidden;filter:drop-shadow(#ffffff 1px 0 0)drop-shadow(#ffffff 0 1px 0)drop-shadow(#ffffff -1px 0 0) drop-shadow(#ffffff 0 -1px0);
        display: block;
        position: absolute;
        top:76%;
        left:2%;
        z-index: 5;
        margin: 0 auto;
}
.lrc #ullrc{
        width: 100%;
        padding: 0;
        list-style: none;
        transition: 0.3s all ease;
        margin: 0;
}
/*歌词普通样式*/
.lrc #ullrc li{
        height: 70px;
        line-height: 60px;
        font-family:华文新魏;
        font-size: 0px;
        color: #000078;
        font-weight: normal;
        transition: .3s all ease;
        list-style-type: none;
        text-align: center;display: block;
        width: 100%;
        margin: 0 auto;
}
/*动态歌词样式*/
.lrc #ullrc li.active{
        font-size: 40px;
        color: #ff0000;
        text-align: center;
}
</style>
<script >
var lrc = `
《 思 念 》 - 梦之旅合唱组合
作词: 乔 羽 | 作曲: 谷建芬
选自:流淌的歌声之真情依旧(六)
歌词编辑:亦是金
- - - - - -
你从哪里来 我的朋友
好像一只蝴蝶
飞进我的窗口
不知能作 几日停留
我们已经分别了太久太久
你从哪里来 我的朋友
你好像一只蝴蝶
飞进我的窗口
为何 你一去 便无消息
只把思念积压在我心头
啊 我的朋友
难道你又要匆匆离去
又把聚会当成一次分手
- - - - - -
你从哪里来 我的朋友
好像一只蝴蝶
飞进我的窗口
不知能作 几日停留
我们已经分别了太久太久
你从哪里来 我的朋友
你好像一只蝴蝶
飞进我的窗口
为何 你一去 便无消息
只把思念积压在我心头
啊 我的朋友
难道你又要匆匆离去
又把聚会当成一次分手
又把聚会当成一次分手
- - 谢谢欣赏 - -

`;
function $(id) {return document.getElementById(id);
}//这样写以后getid方便
function getLrcArray() {
    var parts = lrc.split("\n");
    for (let index = 0; index < parts.length; index++) {
      parts = getLrcObj(parts);
    }
    return parts;

    function getLrcObj(content) {
var twoParts = content.split("]");
var time = twoParts.substr(1);
var timeParts = time.split(":");
var seconds = +timeParts;
      var min = +timeParts;
      seconds = min * 60 + seconds;
      var words = twoParts;
      return{
            seconds: seconds,
            words: words,
      };
    }
}
var lrcArray = getLrcArray();
function inputLrc() {
    for (let index = 0; index < lrcArray.length; index++) {
      var li = document.createElement("li");
      li.innerText = lrcArray.words;
      $("ullrc").appendChild(li);
    }
}
inputLrc();
function setPosition() {
    var index = getLrcIndex();
    if (index == -1) {
      return;
    }
    var lrc_li_height = 70, lrc_ul_height = 60;
    var top = index * lrc_li_height + lrc_li_height / 2 - lrc_ul_height / 2;
if (top < 0) {top = 0;}$("ullrc").style.marginTop = -top + "px";
    var activeLi = $("ullrc").querySelector(".active");
    if(activeLi){
      activeLi.classList.remove("active");}
$("ullrc").children.classList.add("active");
}
var turn = 0;
function getLrcIndex(){
var time = $("aud").currentTime + turn;for (var index = 0; index < lrcArray.length; index++) {
      if (lrcArray.seconds > time) {
            return index - 1;
      }
    }
}
$("aud").ontimeupdate = setPosition;
(function(){let mState = () => aud.paused ? (mplayer.style.setProperty('--disp1','1'), mplayer.style.setProperty('--disp2','0')) : (mplayer.style.setProperty('--disp1','0'), mplayer.style.setProperty('--disp2','1'));
mplayer.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
aud.addEventListener('play', () => mState());
aud.addEventListener('pause', () => mState());
})();
let fs = true;
      fullscreen.onclick = () => {
                fs ? (fullscreen.innerText = '退出', papa.requestFullscreen()) : (fullscreen.innerText = '全屏', document.exitFullscreen());
                fs = !fs;
      };
prog.onclick = (e) => {
                aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
      }
aud.addEventListener('timeupdate', () => {
               aud.addEventListener('timeupdate', () => {prog.style.background= 'linear-gradient(90deg, red, red, red ' + aud.currentTime / aud.duration * 100 + '%, snow 0)';});
                tmsg.innerText = toMin(aud.currentTime) + ' | ' + toMin(aud.duration);

      });
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;
      };

/*控制视频*/
vid=document.querySelector('#vid');
mplayer.onclick =function() { vid.paused ? vid.play() : vid.pause()};
/*结束*/
/*控制歌词*/
wzsd1.style.animationPlayState = aud.paused ? 'paused' : 'running';
aud.addEventListener('playing', () => wzsd1.style.animationPlayState = 'running');
aud.addEventListener('pause', () => wzsd1.style.animationPlayState = 'paused');
/*结束*/
</script>

<script>
if ('getContext' in document.createElement('canvas')) {
    HTMLImageElement.prototype.play = function() {
      if (this.storeCanvas) {
            // 移除存储的canvas
            this.storeCanvas.parentElement.removeChild(this.storeCanvas);
            this.storeCanvas = null;
            // 透明度还原
            image.style.opacity = '';image1.style.opacity = '';
      }
      if (this.storeUrl) {
            this.src = this.storeUrl;   
      }
    };
    HTMLImageElement.prototype.stop = function() {
      var canvas = document.createElement('canvas');
      // 尺寸
      var width = this.width, height = this.height;
      if (width && height) {
            // 存储之前的地址
            if (!this.storeUrl) {
                this.storeUrl = this.src;
            }
            // canvas大小
            canvas.width = width;
            canvas.height = height;
            // 绘制图片帧(第一帧)
            canvas.getContext('2d').drawImage(this, 0, 0, width, height);
            // 重置当前图片
            try {
                this.src = canvas.toDataURL("image/gif");
            } catch(e) {
                // 跨域
                this.removeAttribute('src');
                // 载入canvas元素
                canvas.style.position = 'absolute';
                // 前面插入图片
                this.parentElement.insertBefore(canvas, this);
                // 隐藏原图
                this.style.opacity = '0';
                // 存储canvas
                this.storeCanvas = canvas;
            }
      }
    };
}
var image= document.getElementById("tu");
var image1= document.getElementById("tu1");
mplayer.onclick =function() { aud.paused ? (image.stop(),image1.stop()):(image.play(),image1.play())};
</script>

liumang 发表于 2024-4-23 13:56

很完美了,感谢亦是金老师的好制作{:5_150:}

liumang 发表于 2024-4-23 14:01

好听的歌曲经典梦之旅组合{:5_150:}

非常开心 发表于 2024-4-23 23:17

欣赏亦是金老师的精彩之作
页: [1]
查看完整版本: 《思念》 - 梦之旅(跟着小辣椒老师学习制作频谱播放器)