本帖最后由 凡哥 于 2024-10-3 08:11 编辑
2024年10月3日 星期四
<style>
#dbox { margin: 30px 0 30px calc(50% - 513px); width: 1024px; height: 640px; background: radial-gradient(transparent 70%,transparent,rgba(0,0,128,.6)), url('https://638183.freep.cn/638183/t24/webp2/angelwarrior.webp') no-repeat center/cover; box-shadow: 4px 4px 16px #00000080; z-index: 1; position: relative; }
#msvg { position: absolute; right: 100px; bottom: 100px; }
#cpath { cursor: pointer; filter: drop-shadow(0 0 4px #000); transform-origin: 50%; animation: rot 6s linear infinite var(--state), chgcolor 12s linear infinite alternate var(--state); }
#vid { position: absolute; width: 100%; height: 100%; object-fit: cover; -webkit-mask: radial-gradient(green, transparent, transparent); }
@keyframes rot { to { transform: rotate(360deg); stroke-dashoffset: -160; } }
@keyframes chgcolor { to { fill: rgba(65,105,225,.5); } }
</style>
<div id="dbox">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=36871349" autoplay loop></audio>
<video id="vid" src="https://img.tukuppt.com/video_show/2629112/00/02/34/5b5921021d972.mp4" autoplay loop muted></video>
<svg id="msvg" width="200" height="200">
<defs>
<g id="cpath" fill="rgba(65,105,225,.1)" stroke="rgba(255,255,255,.7)" stroke-width="4" stroke-dasharray="4">
<path d='M100 120 C10 -30,190 -30,100 120'/>
</g>
</defs>
</svg>
</div>
<script>
mState = () => {
dbox.style.setProperty('--state', aud.paused ? 'paused' : 'running');
aud.paused ? (msvg.pauseAnimations(), vid.pause()) : (msvg.unpauseAnimations(), vid.play());
}
mkLeaves = (total) => {
let str = '';
Array(total).fill().forEach((_,idx) => {
str += `<use href="#cpath" transform="rotate(${360 / total * idx} 100 100)"/>`;
});
return str;
};
msvg.innerHTML += mkLeaves(5);
aud.onplaying = aud.onpause = () => mState();
msvg.onclick = () => aud.paused ? aud.play() : aud.pause();
</script>
|