本帖最后由 马黑黑 于 2024-9-4 13:37 编辑
帖子代码
<style>
#mydiv {
margin: 130px 0 30px calc(50% - 721px);
width: 1280px;
height: 700px;
background: url('https://638183.freep.cn/638183/t24/webp2/yrqk.webp') no-repeat center/cover;
box-shadow: 0 0 8px #0000008f;
position: relative;
}
.player {
--size: 160px;
position: absolute;
width: var(--size);
height: var(--size);
cursor: pointer;
animation: rot 8s linear infinite var(--state);
}
.player > span {
position: absolute;
left: calc(var(--size) / 4);
width: 0;
height: 0;
border-style: solid;
border-width: calc(var(--size) / 4) calc(var(--size) / 4) calc(var(--size) / 4) 0;
border-color: transparent lightblue steelblue transparent;
transform-origin: 100% 100%;
filter: drop-shadow(0 0 6px #00000080);
}
.player:nth-of-type(1) { right: 60px; top: 20px; }
.player:nth-of-type(2) { left: 60px; bottom: 20px; }
.player:nth-of-type(3) { left: calc(50% - 80px); bottom: calc(50% - 80px); }
#vid {
position: absolute;
width: 100%;
height: 100%;
opacity: .95;
object-fit: cover;
mix-blend-mode: screen;
-webkit-mask: radial-gradient(circle, transparent 160px, red 220px, red 0);
pointer-events: none;
}
@keyframes rot { to { transform: rotate(-1turn); } }
</style>
<div id="mydiv">
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=424496456" autoplay loop></audio>
<video id="vid" src="https://bpic.588ku.com/video_listen/588ku_video/22/11/04/17/59/34/video6364e2867ce8a.mp4" autoplay loop muted></video>
<div class="player"></div>
<div class="player"></div>
<div class="player"></div>
</div>
<script>
var players = mydiv.querySelectorAll('.player');
mState = () => {
mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
aud.paused ? vid.pause() : vid.play();
};
createPlayers = (elms) => {
elms.forEach(elm => {
Array(total = 5).fill(0).forEach((s,k) => {
s = document.createElement('span');
s.style.transform = `rotate(${360 / total * k}deg)`;
elm.appendChild(s);
});
});
};
createPlayers(players);
aud.oncanplay = aud.onplaying = aud.onpause = () => mState();
players.forEach(player => player.onclick = () => aud.paused ? aud.play() : aud.pause());
</script>
|