马黑黑 发表于 2023-3-12 08:55

星系

<style>
#papa { margin: -80px 0 0 calc(50% - 593px); width: 1024px; height: 640px; background: lightblue url('https://638183.freep.cn/638183/t23/1/xkxi.webp') center/cover no-repeat; box-shadow: 6px 3px 30px #000; position: relative; display: grid; place-items: center; z-index: 1; }
#mplayer { width: 100px; height: 100px; border-radius: 50%; background: lightblue; box-shadow: 5px 5px 30px black inset; cursor: pointer; animation: rot2d 8s infinite linear var(--state); position: absolute; transition: box-shadow .6s; --state: running; }
#mplayer::before, #mplayer::after { position: absolute; content: ''; top: -50px; right: -50px; bottom: -50px; left: -50px; border: 6px dotted snow; border-radius: inherit; transform: perspective(1000px) rotateY(45deg) rotateX(15deg); animation: rot3d 10s infinite linear; --angle: 360deg; }
#mplayer:hover { box-shadow: 5px 5px 60px blue inset; }
#mplayer::after { top: -60px; right: -60px; bottom: -60px; left: -60px; --angle: -1080deg; }
#papa:fullscreen #mplayer { width: 150px; height: 150px; }
#papa:fullscreen #mplayer::before { top: -70px; right: -70px; bottom: -70px; left: -70px; }
#papa:fullscreen #mplayer::after { top: -80px; right: -80px; bottom: -80px; left: -80px; }
@keyframes rot2d { to { transform: rotate(360deg); } }
@keyframes rot3d { to { transform: perspective(1000px) rotateY(45deg) rotateX(15deg) rotateZ(var(--angle)); } }
</style>

<div id="papa">
        <div id="mplayer"></div>
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1939229183" autoplay loop></audio>
</div>

<script>
(function() {
        (function(mkFS) {let setFullScreen = (user_set) => {let pa = user_set.pa;if(typeof(pa) !== 'object') return false;if(!user_set.set) user_set.set = 'color: snow; background: black; border: 2px solid snow; left: 40px; bottom: 40px;';btnMsg = document.createElement('span');btnMsg.style.cssText = `position: absolute; border-radius: 8px; padding: 4px; cursor: pointer; z-index:998; ${user_set.set}`;btnMsg.innerText = '全屏观赏';btnMsg.style.display = 'none';pa.appendChild(btnMsg);let timerId, fs = false;btnMsg.onclick = () => fs ? document.exitFullscreen() : pa.requestFullscreen();pa.addEventListener('mousemove', (e) => {clearTimeout(timerId);btnMsg.style.display = 'block';timerId = setTimeout('btnMsg.style.display = "none"', 3000);});document.addEventListener('fullscreenchange', () => {if (document.fullscreenElement !== null) {fs = true;btnMsg.innerText = '退出全屏';} else {fs = false;btnMsg.innerText = '全屏观赏';}});};mkFS.FS = setFullScreen;})(this);
        let mState = () => mplayer.style.setProperty('--state', aud.paused ? 'pasued' : 'running');
        aud.addEventListener('play', () => mState());
        aud.addEventListener('pause', () => mState());
        mplayer.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
        FS({pa: papa, set: 'color: snow; background: none; border: 2px solid snow; bottom: 20px;'});
})();
</script>

马黑黑 发表于 2023-3-12 08:58

帖子代码
<style>
#papa { margin: -80px 0 0 calc(50% - 593px); width: 1024px; height: 640px; background: lightblue url('https://638183.freep.cn/638183/t23/1/xkxi.webp') center/cover no-repeat; box-shadow: 6px 3px 30px #000; position: relative; display: grid; place-items: center; z-index: 1; }
#mplayer { width: 100px; height: 100px; border-radius: 50%; background: lightblue; box-shadow: 5px 5px 30px black inset; cursor: pointer; animation: rot2d 8s infinite linear var(--state); position: absolute; transition: box-shadow .6s; --state: running; }
#mplayer::before, #mplayer::after { position: absolute; content: ''; top: -50px; right: -50px; bottom: -50px; left: -50px; border: 6px dotted snow; border-radius: inherit; transform: perspective(1000px) rotateY(45deg) rotateX(15deg); animation: rot3d 10s infinite linear; --angle: 360deg; }
#mplayer:hover { box-shadow: 5px 5px 60px blue inset; }
#mplayer::after { top: -60px; right: -60px; bottom: -60px; left: -60px; --angle: -1080deg; }
#papa:fullscreen #mplayer { width: 150px; height: 150px; }
#papa:fullscreen #mplayer::before { top: -70px; right: -70px; bottom: -70px; left: -70px; }
#papa:fullscreen #mplayer::after { top: -80px; right: -80px; bottom: -80px; left: -80px; }
@keyframes rot2d { to { transform: rotate(360deg); } }
@keyframes rot3d { to { transform: perspective(1000px) rotateY(45deg) rotateX(15deg) rotateZ(var(--angle)); } }
</style>

<div id="papa">
        <div id="mplayer"></div>
        <audio id="aud" src="https://music.163.com/song/media/outer/url?id=1939229183" autoplay loop></audio>
</div>

<script>
(function() {
        (function(mkFS) {let setFullScreen = (user_set) => {let pa = user_set.pa;if(typeof(pa) !== 'object') return false;if(!user_set.set) user_set.set = 'color: snow; background: black; border: 2px solid snow; left: 40px; bottom: 40px;';btnMsg = document.createElement('span');btnMsg.style.cssText = `position: absolute; border-radius: 8px; padding: 4px; cursor: pointer; z-index:998; ${user_set.set}`;btnMsg.innerText = '全屏观赏';btnMsg.style.display = 'none';pa.appendChild(btnMsg);let timerId, fs = false;btnMsg.onclick = () => fs ? document.exitFullscreen() : pa.requestFullscreen();pa.addEventListener('mousemove', (e) => {clearTimeout(timerId);btnMsg.style.display = 'block';timerId = setTimeout('btnMsg.style.display = "none"', 3000);});document.addEventListener('fullscreenchange', () => {if (document.fullscreenElement !== null) {fs = true;btnMsg.innerText = '退出全屏';} else {fs = false;btnMsg.innerText = '全屏观赏';}});};mkFS.FS = setFullScreen;})(this);
        let mState = () => mplayer.style.setProperty('--state', aud.paused ? 'pasued' : 'running');
        aud.addEventListener('play', () => mState());
        aud.addEventListener('pause', () => mState());
        mplayer.addEventListener('click', () => aud.paused ? aud.play() : aud.pause());
        FS({pa: papa, set: 'color: snow; background: none; border: 2px solid snow; bottom: 20px;'});
})();
</script>若需要分行源码,以及希望全屏插件独立剥离,请参阅 → 《星系》源码 (52qingyin.cn)

马黑黑 发表于 2023-3-12 09:07

本帖的设计在之前相关帖子基础上有新的尝试:

① 播放控制器在窗口模式与全屏模式间切换时拥有尺寸自响应能力;
② 通过播放控制器主元素的自转带动伪元素的3d旋转。

其中,尝试 ② 有缺陷:3d转换由于受到主元素2d旋转的惯性影响,音乐暂停时不能完美保持它们的3d面,有一些偏差。如果伪元素也停止自转,情况会更糟糕,所以音乐暂停时保留伪元素的自转状态。transform多重应用问题颇多,感觉 transform 的机制需要改进。

马黑黑 发表于 2023-3-12 09:16

3d旋转的面的变化, @绿叶清舟 无意中率先使用过。尝试能出新意。

红影 发表于 2023-3-12 10:19

可以空间三维旋转的,这个有意思,暂停的时候空间不旋转了,可是平面上还是在旋转的呢{:4_187:}

红影 发表于 2023-3-12 10:20

马黑黑 发表于 2023-3-12 08:58
帖子代码
若需要分行源码,以及希望全屏插件独立剥离,请参阅 → 《星系》源码 (52qingyin.cn)

跟着链接发现一个网站呢,是悄然的?{:4_173:}

红影 发表于 2023-3-12 10:24

黑黑又带来改进版新效果{:4_187:}

马黑黑 发表于 2023-3-12 10:53

红影 发表于 2023-3-12 10:19
可以空间三维旋转的,这个有意思,暂停的时候空间不旋转了,可是平面上还是在旋转的呢

解释过的解释过的

马黑黑 发表于 2023-3-12 10:54

红影 发表于 2023-3-12 10:20
跟着链接发现一个网站呢,是悄然的?

对{:4_181:}

之前就做过,后来停摆,现在又继续

马黑黑 发表于 2023-3-12 10:55

红影 发表于 2023-3-12 10:24
黑黑又带来改进版新效果

其实开始做的时候就有这个效果,后来想想先留着,粥粥聪明,先做出来了,我就一直拖着

绿叶清舟 发表于 2023-3-12 11:00

马黑黑 发表于 2023-3-12 09:16
3d旋转的面的变化, @绿叶清舟 无意中率先使用过。尝试能出新意。

这样二个可以分开控制了吧

梦油 发表于 2023-3-12 11:20

效果很好。{:4_199:}

马黑黑 发表于 2023-3-12 11:43

梦油 发表于 2023-3-12 11:20
效果很好。

感谢支持

马黑黑 发表于 2023-3-12 11:44

绿叶清舟 发表于 2023-3-12 11:00
这样二个可以分开控制了吧

可以的

小辣椒 发表于 2023-3-12 14:16

这个好像是双效果的,我都看了许久。。。。

梦油 发表于 2023-3-12 14:22

马黑黑 发表于 2023-3-12 11:43
感谢支持

别客气。

小辣椒 发表于 2023-3-12 14:49

去了你的地盘看见这么多的作品,好厉害的{:4_178:}

马黑黑 发表于 2023-3-12 16:10

小辣椒 发表于 2023-3-12 14:49
去了你的地盘看见这么多的作品,好厉害的

不是我的地盘

马黑黑 发表于 2023-3-12 16:10

梦油 发表于 2023-3-12 14:22
别客气。

应该的{:5_117:}

马黑黑 发表于 2023-3-12 16:11

小辣椒 发表于 2023-3-12 14:16
这个好像是双效果的,我都看了许久。。。。

不知道好不好看
页: [1] 2 3 4 5 6
查看完整版本: 星系