苍穹
本帖最后由 马黑黑 于 2023-4-14 07:50 编辑 <br /><br /><style>#mydiv {margin: -80px 0 0 calc(50% - 593px);width: 1024px;height: 640px;background: #000 url('https://638183.freep.cn/638183/t23/1/rr.jpg') center/cover no-repeat;overflow: hidden;cursor: pointer;position: relative;--state: paused;}
.dot {position: absolute;left: 50%;bottom: -10px;width: 4px;height: 4px;border-radius: 50%;background: snow;}
@keyframes ani { to { transform: rotate(var(--deg)) translateY(-640px); }}
</style>
<div id="mydiv"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1346093344" loop="loop" autoplay="autoplay"></audio>
<script>
(function() {
Array.from({length: 400}).forEach( (item,key) => {let sp = document.createElement('span');let ww = Math.random() * 5 + 2;sp.className = 'dot';sp.style.cssText += ` --deg: ${-50 + Math.random() * 100}deg; width: ${ww}px; height: ${ww}px; background: #${Math.random().toString(16).substr(-6)}; animation: ani 10s ${Math.random() * key - 4}s infinite alternate var(--state);`;mydiv.appendChild(sp);});
let mState = () => mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
aud.addEventListener('play', mState, false);
aud.addEventListener('pause', mState, false);
mydiv.onclick = () => aud.paused ? aud.play() : aud.pause();
})();
</script> 帖子源码
<style>
#mydiv {
margin: 20px auto;
width: 1024px;
height: 640px;
background: #000 url('https://638183.freep.cn/638183/t23/1/rr.jpg') center/cover no-repeat;
overflow: hidden;
cursor: pointer;
position: relative;
--state: paused;
}
.dot {
position: absolute;
left: 50%;
bottom: -10px;
width: 4px;
height: 4px;
border-radius: 50%;
background: snow;
}
@keyframes ani { to { transform: rotate(var(--deg)) translateY(-640px); }}
</style>
<div id="mydiv"></div>
<audio id="aud" src="https://music.163.com/song/media/outer/url?id=1346093344" loop="loop" autoplay="autoplay"></audio>
<script>
Array.from({length: 400}).forEach( (item,key) => {
let sp = document.createElement('span');
let ww = Math.random() * 5 + 2;
sp.className = 'dot';
sp.style.cssText += `
--deg: ${-50 + Math.random() * 100}deg;
width: ${ww}px;
height: ${ww}px;
background: #${Math.random().toString(16).substr(-6)};
animation: ani 10s ${Math.random() * key - 4}s infinite alternate var(--state);
`;
mydiv.appendChild(sp);
});
let mState = () => mydiv.style.setProperty('--state', aud.paused ? 'paused' : 'running');
aud.addEventListener('play', mState, false);
aud.addEventListener('pause', mState, false);
mydiv.onclick = () => aud.paused ? aud.play() : aud.pause();
</script>
本帖最后由 马黑黑 于 2023-4-14 12:43 编辑
本帖用于 css-doodle 加餐教程比较之用
在discuz论坛发帖,默认不会支持第三方JS,因此,css-doodle 特效无法在本坛中使用。我发的这个帖子,是原生 CSS+HTML+JS 实现的粒子效果。而 css-doodle 的一个加餐教程,将展示类似本帖的效果,故先把本帖发布出来。
用 css-doodle 做成的另外两个样式:① 苍穹 (freeee.ml)② 苍穹(css-doodle版本2) (52qingyin.cn) {:4_178:}{:4_178:}{:4_178:} 新播放器好看!{:4_178:} 群星闪烁的夜空太美了。 梦油 发表于 2023-4-14 09:44
群星闪烁的夜空太美了。
感谢支持 亦是金 发表于 2023-4-14 08:41
新播放器好看!
感谢支持 明月 发表于 2023-4-14 08:29
中午好 厉害了,点赞! 马黑黑 发表于 2023-4-14 12:00
感谢支持
你对俺的支持更多。 这些粒子构成了喷泉一样的效果,真美{:4_431:} 马黑黑 发表于 2023-4-14 07:52
本帖用于 css-doodle 加餐教程比较之用
在discuz论坛发帖,默认不会支持第三方JS,因此,css-doodle 特效 ...
两个效果都去看了,一个的伞形更短一些,一个给粒子们弄了个巢,都很漂亮{:4_173:} let ww = Math.random() * 5 + 2;感觉这个宽度值很小啊,咋能散开来时那么大呢?是粒子间的随机宽高么?然后随正负50度发散开来?
看到了再你自己那里用的是css-doodle{:4_173:} 红影 发表于 2023-4-14 16:08
let ww = Math.random() * 5 + 2;感觉这个宽度值很小啊,咋能散开来时那么大呢?是粒子间的随机宽高么?然 ...
ww 变量是粒子个体的尺寸,不是粒子的活动范围。
粒子能散开,与 transform: rotate() translateY() 有关,以前介绍过的。 顾-念 发表于 2023-4-14 13:56
厉害了,点赞!
晚上好 红影 发表于 2023-4-14 15:55
两个效果都去看了,一个的伞形更短一些,一个给粒子们弄了个巢,都很漂亮
{:4_170:} 红影 发表于 2023-4-14 15:51
这些粒子构成了喷泉一样的效果,真美
还不差吧 梦油 发表于 2023-4-14 14:50
你对俺的支持更多。
彼此彼此 马黑黑 发表于 2023-4-14 18:14
彼此彼此
谢啦!{:4_190:}