本帖最后由 花简静 于 2025-8-15 10:36 编辑
<style>
@import 'https://638183.freep.cn/638183/web/css/tz01.css?v=0.1';
#pa { margin: 160px 0;left: calc(50% - 101px);width: clamp(600px, 90vw, 1700px); height: auto; aspect-ratio: 17/9;--bg: url('https://642303.freep.cn/642303/tu/202508007suxin01.webp') no-repeat center/cover; --ma-size: 60px; }
#btnFs { left: 20px; bottom: 20px; color: #eee; }
#mwrap { position: absolute; top:68.2%;left:35.8%;width: 160px; height: 160px; filter: drop-shadow(-40px 80px 0 rgba(255,240,245, .05)); }
#ma { left: 70px; bottom: 80px; display: grid; place-items: center; transform: rotateX(45deg) rotateY(15deg); animation: rot 8s linear infinite var(--state); }
#ma::after { content: ''; position: absolute; width: 24px; height: 24px; border-radius: 50%; background: linear-gradient(#c4dfb6 #6fd715); }
.son { position: absolute; width: 100%; height: 4px; background: repeating-radial-gradient(circle, #f4efee, transparent, Pink 20%); transform: rotate(var(--a)); }
.son::before, .son::after { content: ''; position: absolute; left: -30px; top: calc(50% - 15px); width: 30px; height: 30px; background: inherit; border-radius: 50%; }
.son::after { left: 100%; }
.title-text { font-size: 40px; }
.ani { animation: flash 1s linear alternate var(--state), rotate 1s linear var(--state); }
@keyframes flash { to { color: cyan; opacity: .7; font-size: 30px; } }
@keyframes rot { to { transform: rotateX(45deg) rotateY(15deg) rotateZ(360deg); } }
.pd-vid {mix-blend-mode:overlay;opacity: .79;right:-23%; top:-20%;-webkit-mask: radial-gradient(circle, cyan, cyan,rgba(0,0,0,.65),transparent, transparent, transparent, transparent);}
</style>
<div id="pa">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=2648196685" autoplay loop></audio>
<video class="pd-vid" src="https://bpic.588ku.com/video_listen/588ku_preview/20/08/13/14/47/38/video5f34e20a321c4.mp4" autoplay loop muted></video>
<div id="mwrap">
<div id="ma" class="invert"></div>
</div>
</div>
<script type="module">
import { FS } from 'https://638183.freep.cn/638183/web/js/fullscreen.js';
FS(pa, ma);
var txtAr = ' '.split(''), spans = [], total = 7;
txtAr.forEach( (t, k) => {
var s = document.createElement('span');
s.textContent = t;
s.className = k === 0 ? 'title-text ani' : 'title-text';
var a = -120 / (txtAr.length - 1) * k - 210, r = 160;
s.style.cssText += `
left: ${r + r * Math.cos(a * Math.PI / 180)}px;
top: ${r + r * Math.sin(a * Math.PI / 180)}px;
`;
spans.push(s);
s.onanimationend = () => {
s.classList.remove('ani');
spans[(k + 1) % txtAr.length].classList.add('ani');
};
mwrap.appendChild(s);
});
Array.from({length: total}).forEach( (s,k) => {
s = document.createElement('span');
s.classList.add('son');
s.style.cssText += `--a: ${180 / total * k}deg;`;
ma.appendChild(s);
});
</script>
|