有声有色 发表于 2026-2-23 15:00

恋曲1990

本帖最后由 有声有色 于 2026-3-19 13:59 编辑 <br /><br /><div class="t_fsz">
<table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_1896529">
<i class="pstatus"> </i><br /><br /><style type="text/css">
#papa        {
        width: 1200px;height: 710px;position:relative; --state:paused;
        box-shadow:0px 0px 1px 2px #045768, 0px 0px 0px 8px #99e5f5,0px 0px 5px 15px #045768;
        overflow:hidden;border-radius:1%;display:grid; place-items:center;
        margin-top:100px;margin-LEFT: -310px;
}
.vid { position: absolute; width: 1500px; height: 710px; object-fit: cover; opacity: 1; }
.mypic { position: absolute; width: 10px; height: 10px;left: 82px;top: 380px; }


#baiBox {
      width: 500px;
        height: 50px;
      text-align: center;
      font-family:微软简中圆;
      font-size: 2.0rem;
      font-weight: bold;
      color: #f46ff6;
      transform-origin: top;
      animation: yao 1.0s linear infinite alternate;
        position:absolute;left:50px;top:30px;/*位置设置*/
}

@keyframes yao {
      from{transform: perspective(800px) rotatex(30deg); }
      to { transform: perspective(800px) rotatex(-30deg); }
}

.tit { position: relative;width: 500px;height: 30px;filter: drop-shadow(-1px 1px 1px #ffffff)drop-shadow(0px -1px 1px #ffffff)drop-shadow(0px 0px 1px #ffffff)drop-shadow(0px 0px 1px #ffffff)drop-shadow(0px 0px 1px #ffffff) }

css-doodle { position: absolute; }
</style>


<div id="papa">

<metaname="referrer" content="never">
<video frameborder="0" class="vid"src="https://txmov2.a.kwimgs.com/upic/2026/02/24/06/BMjAyNjAyMjQwNjU2MTRfODk4OTU4MThfMTg4NzUzOTY2OTYwXzJfMw==_b_Be3614f1fe638068457917b57d7266ead.mp4" autoplay muted loop="" controls="" style="MARGIN-TOP:0px;MARGIN-LEFT:0px;background:#000 ;width:1380px; height: 750px;-webkit-mask-image: radial-gradient(black 100%, transparent 100%);position:absolute;left:0px;top:0px;"></video> </video>


<img class="mypic" src="https://z3.ax1x.com/2021/08/26/hujGMd.gif" alt="" />



<css-doodle grid="16" id="fFloat">
        :doodle {
                @size: 1200px 680px;
        }
        position: absolute;
        left: @r(255)%;
        top: -10%;
        :after {
                position: absolute;
                content: '@p(life, ♬, ♪, ♩,♫, ∮, ✲, ❉, ❤,, ☺, ★, ☆,ideal, ❄)';
                color:#ffffff;
                font-size: @r(15, 25)px;
        }
        animation: fall 40s @r(-6, 36)s infinite var(--state);
        @keyframes fall {
                from { transform: rotate(0deg) translate(0px); }
                to { transform: rotate(@r(-250,160)deg) translate(-1500px); }
        }
</css-doodle>

<css-doodle id="mplayer">
        :doodle {
                @grid: 2 / 500px 100px;
                color: var(--color);
                bottom: 70px;
                z-index: 999;
                --prog: 0%;
                --size: 60px;
                --ttmsg1: '00:00';
                --ttmsg2: '00:00';
                --color: #fb8a2f;
                position:absolute;
        }
        /* 时间信息 : 左 */
        @nth(1) {@place: 5% 100%; :after { content: var(--ttmsg1); } }
                /* 控制器 */
        @nth(2) {
                @size: 60px;
                @shape: windmill;
                @place: 50% 35%;                        
                background: var(--color);
                animation: rot 6s infinite linear var(--state);
        }
                /* 时间信息 : 右 */
        @nth(3) {
                @place: 95% 100%;
                :after { content: var(--ttmsg2); }
        }
                /* 进度条 */
        @nth(4) {
                @place: 50% 80%;
                @size: 100% 2px;
                background: Silver;
                display: grid;
                place-items: center start;
        :before {
                content: '';
                width: var(--prog);
                height: 100%;
                background: var(--color);
        }
}
@keyframes rot { to { transform: rotate(1turn); } }
</css-doodle>

<css-doodle id="lrc">
        :doodle {
                @size: auto 3.5em;
                bottom: 20px;
                --geci: "花潮lrc在线";
                --motion: cover2;
                --tt: 1s;
                position:absolute;
        }
        /* 单元格两个伪元素显示lrc歌词 */
        display: grid;
        place-items: center start;
        :before, :after {
                content: var(--geci);
                color: snow; /* 歌词底色 */
                font: bold 2.4em sans-serif;
                text-shadow: 1px 1px 1px #000;
                white-space: pre;
       }
        :after {
                position: absolute;
                width: 0;
                color: #18f978; /* 同步歌词颜色 */
                overflow: hidden;
                animation: var(--motion) var(--tt) linear forwards var(--state);
        }
        @keyframes cover1 { from { width: 0; } to { width: 100%; } }
        @keyframes cover2 { from { width: 0; } to { width: 100%; } }
</css-doodle>


<div id="baiBox">
<div class="tit">
<span style="color:#fb52f9;"><span style="font-size:32px;">《恋曲1990》</span>
<span style="color:#3d46f7;"><span style="font-size:20px;">   -学 唱</span>
</div></div>

<div style="position:absolute;bottom:10px;right:50px;filter: drop-shadow(-1px 1px 1px #e8f552)drop-shadow(0px -1px 1px #e8f552)drop-shadow(0px 0px 1px #e8f552)drop-shadow(0px 0px 1px #e8f552)drop-shadow(0px 0px 1px #e8f552)">
<p><span style="color:#ff0000;"><span style="font-family:华文隶书;"><span style="font-size:26px;"></span></span></span></p></div>

<div style="position:absolute;bottom:20px;left:50px;filter: drop-shadow(-1px 1px 1px #ffffff)drop-shadow(0px -1px 1px #ffffff)drop-shadow(0px 0px 1px #ffffff)drop-shadow(0px 0px 1px #ffffff)drop-shadow(0px 0px 1px #ffffff)">
<p><span style="color:#3d46f7;"><span style="font-family:微软雅黑;"><span style="font-size:24px;"></span></span></span></p></div>

<audio id="aud" src="http://cccimg.com/view.php/64070b94dbd7cfa944659738596cfb6e.mp3" autoplay loop></audio>
</div>

<script>
(function() {
        let slip = 0.5, mFlag = true, mKey = 0, clickIdx = 0, progChg = 0, cursors = ['default','pointer','pointer'];
let lrcAr = [
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
        ,
       
];

        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 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 ? (papa.style.setProperty('--state', 'paused') ) : (papa.style.setProperty('--state','running'));
        let showLrc = (time) => {lrc.style.setProperty('--motion', mFlag ? 'cover1' : 'cover2');lrc.style.setProperty('--geci', '"' + lrcAr + '"');lrc.style.setProperty('--tt', time + 's');mKey += 1;mFlag = !mFlag;};
        aud.addEventListener('play', mState, false);
        aud.addEventListener('pause', mState, false);
        aud.addEventListener('seeked', () => calcKey());
        aud.addEventListener('timeupdate', () => {for (j = 0; j < lrcAr.length; j++) {if (aud.currentTime - slip >= lrcAr) {cKey = j;if (mKey === j) showLrc(lrcAr);else continue;}}mplayer.style.setProperty('--ttmsg1', `'${toMin(aud.currentTime)}'`);mplayer.style.setProperty('--ttmsg2', `'${toMin(aud.duration-aud.currentTime)}'`);mplayer.style.setProperty('--prog',`${100 * aud.currentTime / aud.duration}%`);});
        mplayer.onclick = () => {if(clickIdx === 1) aud.paused ? aud.play() : aud.pause();if(clickIdx === 2) aud.currentTime = progChg;};
        mplayer.onmousemove = (e) => {let size = parseInt(window.getComputedStyle(mplayer).getPropertyValue('--size')), ww = mplayer.offsetWidth, hh = mplayer.offsetHeight;clickIdx = e.offsetY > hh/1.5 ? 2 : (e.offsetX > (ww - size)/2 && e.offsetX < (ww + size)/2 && e.offsetY < hh/1.5 ? 1 : 0);mplayer.style.cursor = cursors;if(clickIdx > 1) progChg = aud.duration * e.offsetX / ww;};
})();

(function() {
    let vid = document.querySelector('.vid');
    let script = document.createElement('script');
    script.src = 'https://unpkg.com/css-doodle@0.34.8/css-doodle.min.js';
    document.head.appendChild(script);
    let mState = () => aud.paused ? (papa.style.setProperty('--state', 'paused'), vid.pause()) : (papa.style.setProperty('--state', 'running'), vid.play());   
    aud.addEventListener('play', mState, false);
    aud.addEventListener('pause', mState, false);
    mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();
})();
</script>
</td></tr></table>

梦江南 发表于 2026-2-23 15:55

这个对口型唱歌有这么长的时间可以唱啊?有声老师太棒了!祝新春快乐!{:4_187:}

梦江南 发表于 2026-2-23 15:56

这是你自己唱的啊!唱得好听,还把字幕都 配上了。厉害哦!{:4_199:}

红影 发表于 2026-2-23 19:42

看到是自学自唱,原来是有声有色老师自己唱的,为什么不发翻唱版,这么好的歌呢{:4_204:}

红影 发表于 2026-2-23 19:43

这首是罗大佑的歌,应该是恋曲1990啊,怎么成了1999{:4_173:}

红影 发表于 2026-2-23 19:45

AI制作对口型,这个制作很棒,嘴形准确。
好像背景图上有代码,这个不知道怎么回事呢{:4_203:}

红影 发表于 2026-2-23 19:45

AI制作对口型,这个制作很棒,嘴形准确。
好像背景图上有代码,这个不知道怎么回事呢{:4_203:}

红影 发表于 2026-2-23 19:48

演唱好听,给有声有色老师点赞{:4_187:}

小辣椒 发表于 2026-2-23 23:24

太棒了,居然还做了个播放器上去{:4_178:}

有声有色 发表于 2026-2-24 07:22

梦江南 发表于 2026-2-23 15:56
这是你自己唱的啊!唱得好听,还把字幕都 配上了。厉害哦!

谢谢鼓励   好长时间没做啦。歌词与音乐还是没全对上,看到红影的回复,题目写错了,现在改回来了,哈哈口型就对不上了。

有声有色 发表于 2026-2-24 07:30

红影 发表于 2026-2-23 19:45
AI制作对口型,这个制作很棒,嘴形准确。
好像背景图上有代码,这个不知道怎么回事呢

第一次用LRC做歌词对口型的音画,哈哈出来不少差错,现在已改正过来了 就是对口型不能使用了,今天有空再做一个对口型的歌曲。


今天上班了吧愿新的一年一切都顺顺利利!

有声有色 发表于 2026-2-24 07:31

小辣椒 发表于 2026-2-23 23:24
太棒了,居然还做了个播放器上去

谢谢辣椒老师鼓励   新年快乐

红影 发表于 2026-2-24 20:12

有声有色 发表于 2026-2-24 07:30
第一次用LRC做歌词对口型的音画,哈哈出来不少差错,现在已改正过来了 就是对口型不能使用了,今天有空再 ...

做得很好啊,有声有色老师唱歌也很好听呢{:4_187:}
页: [1]
查看完整版本: 恋曲1990