天地孤远任我行
<style>#papa {
margin: 120px 0 0 calc(50% - 681px);
width: 1200px;
height: 629px;
background: gray url('https://638183.freep.cn/638183/t22/webp/tdgy.webp') no-repeat center/cover;
display: grid;
place-items: center;
box-shadow: 3px 3px 20px #000;
perspective: 1000px;
overflow: hidden;
user-select: none;
position: relative;
z-index: 1;
}
#mplayer {
position: absolute;
bottom: 20px;
grid-template-columns: auto auto auto;
gap: 6px;
display: grid;
place-items: center;
color: hsl(0, 100%, 100%);
font: normal 16px sans-serif;
z-index: 999;
}
#btnplay {
--state: paused;
margin-right: -4px;
width: 30px;
height: 30px;
font: bold 30px/30px serif;
text-align: center;
cursor: pointer;
animation: rot 4s infinite linear;
animation-play-state: var(--state);
}
#prog {
width: 200px;
height: 20px;
opacity: .95;
cursor: pointer;
}
.stars {
position: absolute;
width: 3px;
height: 3px;
border-radius: 50%;
background: silver;
transform-style: preserve-3d;
}
@keyframes move { to { transform: rotate(0) translate3d(0, 0, 0); } }
@keyframes rot { to { transform: rotate(1turn); } }
</style>
<div id="papa">
<div id="mplayer">
<span id="btnplay">✿</span>
<meter id="prog" low="30" high="90" max="100" optimum="100" value="1"></meter>
<span id="tmsg">00:00 | 00:00</span>
</div>
</div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=393697.mp3" loop autoplay></audio>
<script>
(function() {
(function() {
for(j=0; j<500; j++) {
let ele = document.createElement('span');
ele.className = 'stars';
ele.style.cssText += `
left: ${Math.random() * 400 + 450}px;
top: ${Math.random() * 80 + 100}px;
background: hsl(${Math.random() * 360}, ${Math.random() * 50 + 40}%,${Math.random() * 60 + 30}%);
box-shadow: 0 0 5px hsla(0,10%,100%,.25);
transform: rotate(${Math.random() * 360 + 360}deg) translate3d(${Math.random() * 400 + 100}px,${Math.random() * 300}px,${Math.random() * 900}px);
animation: move 100s infinite alternate ${-10 - Math.random() * 20}s linear;
`;
papa.appendChild(ele);
}
})();
btnplay.onclick = () => aud.paused ? aud.play() : aud.pause();
prog.onclick = (e) => {
aud.currentTime = aud.duration * e.offsetX / prog.offsetWidth;
}
aud.addEventListener('pause', () => mState());
aud.addEventListener('play', () => mState());
aud.addEventListener('seeked', () => aud.play());
aud.addEventListener('timeupdate', () => {
prog.value = aud.currentTime / aud.duration * 100;
tmsg.innerText = `${toMin(aud.currentTime)} | ${toMin(aud.duration)}`;
});
let mState = () => btnplay.style.setProperty('--state', aud.paused ? 'paused' : 'running');
let toMin = (val) => {
if (!val) return '00:00';
val = Math.floor(val);
let min = parseInt(val / 60),
sec = parseFloat(val % 60);
if (min < 10) min = '0' + min;
if (sec < 10) sec = '0' + sec;
return min + ':' + sec;
};
})();
</script>
我怕插队,等了一下再回帖{:4_173:} 这个粒子效果和前面那种不一样了,会集中后再散开{:4_199:} 小辣椒 发表于 2022-11-8 13:02
这个粒子效果和前面那种不一样了,会集中后再散开
就在animation里加一个 alternate,表示往复运行。CSS很奇妙的。 马黑黑 发表于 2022-11-8 13:08
就在animation里加一个 alternate,表示往复运行。CSS很奇妙的。
这个集中再闪开是按外框图的样子吧?不能按自己设置尺寸大小?比如我想圆的。。。 小辣椒 发表于 2022-11-8 13:10
这个集中再闪开是按外框图的样子吧?不能按自己设置尺寸大小?比如我想圆的。。。
最简单的方法是把粒子加给一个圆形的元素,比如加给 #mama 而不是 #papa:
#mama {
position: absolute;
width: 400px;
height: 400px;
border-radius: 50%; /*圆形*/
overflow: hidden; /*防止溢出*/
}
然后,for语句添加粒子添加给 #mama:
(function() {
for(j=0; j<500; j++) {
let ele = document.createElement('span');
ele.className = 'stars';
ele.style.cssText += `
left: ${Math.random() * 400 + 450}px;
top: ${Math.random() * 80 + 100}px;
background: hsl(${Math.random() * 360}, ${Math.random() * 50 + 40}%,${Math.random() * 60 + 30}%);
box-shadow: 0 0 5px hsla(0,10%,100%,.25);
transform: rotate(${Math.random() * 360 + 360}deg) translate3d(${Math.random() * 400 + 100}px,${Math.random() * 300}px,${Math.random() * 900}px);
animation: move 100s infinite alternate ${-10 - Math.random() * 20}s linear;
`;
mama.appendChild(ele);
}
})();
当然,粒子的left和top值必须做相应修改,比方说left,原来的是这样:
left: ${Math.random() * 400 + 450}px;
显然超出了 mama 元素的尺寸,可以改为:
left: ${Math.random() * 100 + 150}px;
这样可以保证left的随机值在 150px 到 250px 之间。top值也做类似处理。还有,translate3d()函数里的参数尤其是头两个也要做相应修改,以使子元素的运动尽可能最大限度是在 400*400 的区域里(但运动中总会有溢出,溢出部分前面的#mama选择器已经不现实它们了)。 我回来了。得慢慢学习了。 漂亮的珠珠像一群鸟儿,徜徉在天地间,真美{:4_199:} 五彩缤纷、绚丽多姿,太美了。 欣赏音画佳作! 加林森 发表于 2022-11-8 13:58
我回来了。得慢慢学习了。
队长回来就好阿,注意调整身体 相约爱晚亭 发表于 2022-11-8 16:39
欣赏音画佳作!
感谢 彩色的小圆点飞舞在空寂中,既有趣又漂亮{:4_187:} 这个播放器也是美美哒{:4_187:} 千羽 发表于 2022-11-8 18:56
这个播放器也是美美哒
雪花按钮,挺好的 红影 发表于 2022-11-8 16:16
漂亮的珠珠像一群鸟儿,徜徉在天地间,真美
天地孤远的镜像需要一些动态点缀 千羽 发表于 2022-11-8 18:55
彩色的小圆点飞舞在空寂中,既有趣又漂亮
有点意思的吧 梦油 发表于 2022-11-8 16:33
五彩缤纷、绚丽多姿,太美了。
感谢支持 马黑黑 发表于 2022-11-8 19:02
有点意思的吧
嗯,挺好{:4_181:} 千羽 发表于 2022-11-8 19:03
嗯,挺好
那就好