仰望
<style>#papa {
--state: paused;
--s1: 0.8; --s2: 1.6;
margin: -80px 0 0 calc(50% - 593px);
display: grid;
place-items: center;
width: 1024px;
height: 640px;
background: lightblue url('https://638183.freep.cn/638183/t23/webp/iyyb.webp') no-repeat center/cover;
box-shadow: 6px 3px 20px #000;
user-select: none;
position: relative;
z-index: 1;
}
#papa:fullscreen { --s1: 1; --s2: 2; }
#papa:fullscreen .ball { width: 20px; height: 20px; }
#mplayer {
position: absolute;
width: 140px;
height: 140px;
display: grid;
place-items: center;
cursor: pointer;
animation: change 10s linear infinite alternate var(--state);
}
.ball {
position: absolute;
width: 15px;
height: 15px;
border-radius: 50%;
box-shadow: -5px 0 10px hsla(0,0%,0%,.42) inset;
}
#btnFs {
position: absolute;
bottom: 20px;
width: fit-content;
height: fit-content;
padding: 6px;
border-radius: 6px;
border: 2px solid snow;
color: snow;
text-shadow: 1px 1px 1px #000;
display: none;
cursor: pointer;
}
@keyframes flash { to { box-shadow: 0 0 100px 30px hsla(200, 100%,50%, .35), -2px -2px 8px snow inset; } }
@keyframes change { from { transform: rotate(0) scale(var(--s1)); } to { transform: rotate(1turn) scale(var(--s2)); } }
</style>
<div id="papa">
<div id="mplayer"></div>
<div id="btnFs">全屏观赏</div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1858415053.mp3" autoplay loop></audio>
</div>
<script>
(function() {
let total = 18, fs = false, timerId;
for(let i = 0; i < total; i ++) {
let ball = document.createElement('span');
ball.className = 'ball';
ball.style.cssText += `
background: #${Math.random().toString(16).substr(-6)};
transform: rotate(${360/total*i}deg) translate(70px);
animation: flash ${Math.random()+0.1}s infinite alternate var(--state);
`;
mplayer.appendChild(ball);
}
let mState = () => papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('play', () => mState());
aud.addEventListener('pause', () => mState());
aud.addEventListener('ended', () => playNext());
aud.addEventListener('error', () => {
if(aud.error.code === 4) aud.src = 'http://www.kumeiwp.com/sub/filestores/2023/03/01/c6bc152cd2954d79cff5da3a7adba48d.mp3';
});
papa.addEventListener('mousemove', (e) => {
clearTimeout(timerId);
btnFs.style.display = 'block';
timerId = setTimeout('btnFs.style.display = "none"', 3000);
});
btnFs.addEventListener('click', () => fs ? document.exitFullscreen() : papa.requestFullscreen());
document.addEventListener('fullscreenchange', () => document.fullscreenElement !== null ? (fs = true, btnFs.innerText = '退出全屏') : (fs = false, btnFs.innerText = '全屏观赏'));
})();
</script>
帖子代码
<style>
#papa {
--state: paused;
--s1: 0.8; --s2: 1.6;
margin: 80px 0 0 calc(50% - 593px);
display: grid;
place-items: center;
width: 1024px;
height: 640px;
background: lightblue url('https://638183.freep.cn/638183/t23/webp/iyyb.webp') no-repeat center/cover;
box-shadow: 6px 3px 20px #000;
user-select: none;
position: relative;
z-index: 1;
}
#papa:fullscreen { --s1: 1; --s2: 2; }
#papa:fullscreen .ball { width: 20px; height: 20px; }
#mplayer {
position: absolute;
width: 140px;
height: 140px;
display: grid;
place-items: center;
cursor: pointer;
animation: change 10s linear infinite alternate var(--state);
}
.ball {
position: absolute;
width: 15px;
height: 15px;
border-radius: 50%;
box-shadow: -5px 0 10px hsla(0,0%,0%,.42) inset;
}
#btnFs {
position: absolute;
bottom: 20px;
width: fit-content;
height: fit-content;
padding: 6px;
border-radius: 6px;
border: 2px solid snow;
color: snow;
text-shadow: 1px 1px 1px #000;
display: none;
cursor: pointer;
}
@keyframes flash { to { box-shadow: 0 0 100px 30px hsla(200, 100%,50%, .35), -2px -2px 8px snow inset; } }
@keyframes change { from { transform: rotate(0) scale(var(--s1)); } to { transform: rotate(1turn) scale(var(--s2)); } }
</style>
<div id="papa">
<div id="mplayer"></div>
<div id="btnFs">全屏观赏</div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1858415053.mp3" autoplay loop></audio>
</div>
<script>
(function() {
let total = 18, fs = false, timerId;
for(let i = 0; i < total; i ++) {
let ball = document.createElement('span');
ball.className = 'ball';
ball.style.cssText += `
background: #${Math.random().toString(16).substr(-6)};
transform: rotate(${360/total*i}deg) translate(70px);
animation: flash ${Math.random()+0.1}s infinite alternate var(--state);
`;
mplayer.appendChild(ball);
}
let mState = () => papa.style.setProperty('--state', aud.paused ? 'paused' : 'running');
mplayer.onclick = () => aud.paused ? aud.play() : aud.pause();
aud.addEventListener('play', () => mState());
aud.addEventListener('pause', () => mState());
aud.addEventListener('ended', () => playNext());
aud.addEventListener('error', () => {
if(aud.error.code === 4) aud.src = 'http://www.kumeiwp.com/sub/filestores/2023/03/01/c6bc152cd2954d79cff5da3a7adba48d.mp3';
});
papa.addEventListener('mousemove', (e) => {
clearTimeout(timerId);
btnFs.style.display = 'block';
timerId = setTimeout('btnFs.style.display = "none"', 3000);
});
btnFs.addEventListener('click', () => fs ? document.exitFullscreen() : papa.requestFullscreen());
document.addEventListener('fullscreenchange', () => document.fullscreenElement !== null ? (fs = true, btnFs.innerText = '退出全屏') : (fs = false, btnFs.innerText = '全屏观赏'));
})();
</script>
本帖特点:全屏模式下,珠链会相应变大。
实现方法:
利用伪类 :fullscreen 设置进入全屏后关键帧动画 change(源码48行)所需CSS变量 --s1 和 --s2 从窗口模式的 0.8 - 1.6(源码04行)变为 1 - 2(源码16行);同时,令珠子的宽高尺寸从原来的 15*15(源码29、30行)变为 20*20(源码17行)。 变幻珠链比较朴素的版本链接:
https://www.huachaowang.com/forum.php?mod=viewthread&tid=66935&page=1#pid1848743 黑黑把那珠链又加了很多改进,加入了彩色,还令它能旋转和变大,并且全屏时也能随之变化。
这个珠链在帖子里真漂亮{:4_187:} 欣赏佳作 红影 发表于 2023-3-1 10:04
黑黑把那珠链又加了很多改进,加入了彩色,还令它能旋转和变大,并且全屏时也能随之变化。
这个珠链在帖子 ...
珠链过去使用过,这里有不同的处理 起个网名好难 发表于 2023-3-1 10:25
欣赏佳作
感谢支持 醉美水芙蓉 发表于 2023-3-1 11:53
好漂亮的手链!
比较喜欢做手链{:5_117:} 醉美水芙蓉 发表于 2023-3-1 11:53
不仅闪闪发光,还会放大缩小!
这效果还不错吧 醉美水芙蓉 发表于 2023-3-1 11:54
哇!还会左右旋转!黑黑老师太厉害了!
顺时针逆时针旋转只需 animation 属性里加入 alternate 便可 生活在我们身边,美好在我们眼前。 仰望星空的菇凉,可别减肥过度哟{:4_189:} 樵歌 发表于 2023-3-1 16:12
仰望星空的菇凉,可别减肥过度哟
嗯,太牙签了 马黑黑 发表于 2023-3-1 12:07
珠链过去使用过,这里有不同的处理
是啊,还有个专门的封装呢{:4_187:} 红影 发表于 2023-3-1 18:35
是啊,还有个专门的封装呢
珠链很漂亮的 本帖最后由 千羽 于 2023-3-1 21:05 编辑
这图色调挺通透,播放器太美了{:4_187:}