马黑黑 发表于 2022-12-8 07:49

The Lovers

本帖最后由 马黑黑 于 2022-12-8 07:54 编辑 <br /><br /><style>
#papa { margin: 0 0 0 calc(50% - 593px); width: 1024px; height: 683px; background: pink url('https://638183.freep.cn/638183/qd/lovers.jpg') no-repeat center/cover; box-shadow: 3px 3px 20px #000; position: relative; z-index: 1; }
#mplayer { position: absolute; bottom: 40px; left: 160px; width: 120px; height: 120px; border-radius: 50%; border: 6px solid darkgreen; display: grid; place-items: center center; user-select: none; cursor: pointer; }
#tmsg { font: normal 14px sans-serif; color: lightgreen; z-index: 450; }
.mline { --hh: 0px; position: absolute; width: 2px; height: 6px; background: green; }
.mline::before, .mline::after {position: absolute;content: '';width: 100%;height: var(--hh); }
.mline::before { bottom: 0;left: 0;background: linear-gradient(to top, green, lightgreen); }
.mline::after { top: 0;left: 0;background: linear-gradient(to bottom, green, lightgreen); }
#tit { --state: running; position: absolute; top: 10px; left: 20px; font: bold 2em sans-serif; color: lightgreen; text-shadow: 1px 2px 2px #000; }
#tit::before { position: absolute; content: attr(data-tit); width: 0; height: 100%; left: 0; top: 0; white-space: pre; color: #a90d30; text-shadow: 1px 2px 2px snow; overflow: hidden; animation: cover 10s infinite alternate linear; animation-play-state: var(--state); }
@keyframes cover { from { width: 0; } to { width: 100%; } }
</style>

<div id="papa">
        <div id="tit" data-tit="THE LOVERS">THE LOVERS</div>
        <div id="mplayer"><span id="tmsg">play</span></div>
        <img src="https://638183.freep.cn/638183/t22/animal/bird3.gif" alt="" style="position: absolute; right: 20px; top: 20px;" />
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=28221434.mp3" autoplay loop></audio>
</div>

<script>
(function() {
        let ppsize = 4, gap = 0, cNum = 0;
        let total = Math.floor(mplayer.clientWidth * Math.PI / (ppsize + gap));
        let ypData = ;
        for(j=0; j< total; j++) {
                let ele = document.createElement('span');
                ele.className = 'mline';
                ele.style.width = ppsize + 'px';
                ele.style.transform = `rotate(${j*360/total}deg) translateY(63px)`;
                mplayer.appendChild(ele);
        }
        let lines = document.querySelectorAll('.mline');
        let update = () => {
                lines.forEach((item,key) => item.style.setProperty('--hh',Math.random() * ypData / 5 + 'px'));
                if(!aud.paused) window.requestAnimationFrame(update);
        };
        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;}
        mplayer.onclick = () => aud.paused ? (aud.play(),tit.style.setProperty('--state','running')) : (aud.pause(),tit.style.setProperty('--state','paused'));
        aud.addEventListener('timeupdate', () => {
                cNum ++;
                if(cNum >= ypData.length) cNum = 0;
                update();
                tmsg.innerText = '-' + toMin(aud.duration - aud.currentTime);
        });
})();
</script>

马黑黑 发表于 2022-12-8 08:14

频谱模拟同步响应音频变化,实时感不是很好,聊胜于无吧。

频谱变化的速度很快,它由 requestAnimationFrame 驱动,未设置频谱元素的延时属性 transition(若设置且恰当,则可以控制频谱速度,可参考昨天在水吧发的帖子的做法)。

频谱的外观,是在昨天发的圆内频谱基础上略作改动,频谱突破了圆内圈。方法很简单:加另外一个伪元素,::after 。频谱条长度的变化通过两给伪元素实现,其主元素自始至终都是和圆的边框一样的高度。

红影 发表于 2022-12-8 11:00

看了介绍,觉得这个效果肯定很棒。虽然现在还无法欣赏到效果{:4_187:}

马黑黑 发表于 2022-12-8 11:03

红影 发表于 2022-12-8 11:00
看了介绍,觉得这个效果肯定很棒。虽然现在还无法欣赏到效果

{:4_173:}

小辣椒 发表于 2022-12-8 11:05

这个圆频谱作出来了{:4_199:}

黑黑这么忙还是完成这个圆频谱的示范,太感谢了{:4_187:}

小辣椒 发表于 2022-12-8 11:06

黑黑威武{:4_178:}

马黑黑 发表于 2022-12-8 11:08

小辣椒 发表于 2022-12-8 11:05
这个圆频谱作出来了

黑黑这么忙还是完成这个圆频谱的示范,太感谢了

今天补休

小辣椒 发表于 2022-12-8 11:09

红影 发表于 2022-12-8 11:00
看了介绍,觉得这个效果肯定很棒。虽然现在还无法欣赏到效果

亲爱的,用手机可以

马黑黑 发表于 2022-12-8 11:11

小辣椒 发表于 2022-12-8 11:06
黑黑威武

说的俺都不好意思了{:4_170:}

小辣椒 发表于 2022-12-8 11:14

马黑黑 发表于 2022-12-8 11:11
说的俺都不好意思了

有啥不好意思,我有你这个水平我会开心s的

马黑黑 发表于 2022-12-8 11:17

小辣椒 发表于 2022-12-8 11:14
有啥不好意思,我有你这个水平我会开心s的

那我开心一下{:4_170:}

梦缘 发表于 2022-12-8 15:25

频谱漂亮,感谢分享!{:4_185:}

红影 发表于 2022-12-8 16:37

马黑黑 发表于 2022-12-8 11:03


黑黑辛苦了{:4_187:}

红影 发表于 2022-12-8 16:38

小辣椒 发表于 2022-12-8 11:09
亲爱的,用手机可以

我习惯电脑来论坛,基本不用手机来的{:4_173:}

马黑黑 发表于 2022-12-8 17:06

红影 发表于 2022-12-8 16:37
黑黑辛苦了

也不算啥辛苦,玩玩

马黑黑 发表于 2022-12-8 17:11

梦缘 发表于 2022-12-8 15:25
频谱漂亮,感谢分享!

下午好!感谢支持

红影 发表于 2022-12-8 18:49

马黑黑 发表于 2022-12-8 17:06
也不算啥辛苦,玩玩

看到了,好奇特的效果{:4_187:}

马黑黑 发表于 2022-12-8 18:57

红影 发表于 2022-12-8 18:49
看到了,好奇特的效果

就是太快了

红影 发表于 2022-12-8 19:22

马黑黑 发表于 2022-12-8 18:57
就是太快了

像只小刺猬{:4_173:}

马黑黑 发表于 2022-12-8 19:23

红影 发表于 2022-12-8 19:22
像只小刺猬

可以像之前那样,不用请求关键帧动画
页: [1] 2
查看完整版本: The Lovers