天女散珠
<style>.bgBox {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 1280px;
height: 768px;
left: -342px;
background: #000 url('https://638183.freep.cn/638183/t22/51/laomiao.jpg') no-repeat;
overflow: hidden;
perspective: 3000px;
}
.ball {
position: absolute;
width: 24px;
height: 24px;
border-radius: 50%;
display: block;
transform-style: preserve-3d;
animation: fly var(--ss) linear infinite alternate;
}
.ball::before, .ball::after {
position: absolute;
content: '';
width: 24px;
height: 24px;
border-radius: 50%;
left: -10px;
top: 5px;
background: green;
animation: fly calc(var(--ss) + 1s) linear infinite;
}
.ball::after {
background: red;
animation: fly calc(var(--ss) + 2s) linear infinite;
}
@keyframes fly {
0% { transform: translate3d(0, 0, 0) scale(0.6); opacity: 0; }
50% { opacity: .6; }
100% { transform: translate3d(var(--tx), var(--ty), var(--tz)); opacity: 0; }
}
</style>
<div class="bgBox"></div>
<script>
let bgBox = document.querySelector('.bgBox');
let total = 200;
let sStr = '';
for(j=0; j<total; j++){
let ww = getNum(20,30);
let bg = `background: linear-gradient(120deg, ${setRgb()}, ${setRgb()}`;
let xx = getNum(-640,640);
let yy = getNum(-384,384) ;
sStr += `<span class='ball' style='--ss: ${getNum(4,10)}s; --tx: ${xx}px; --ty:${yy}px; --tz: ${getNum(10,100)}px; width: ${ww}px; height: ${ww}px; ${bg}'></span>`;
}
bgBox.innerHTML += sStr;
let aud = document.createElement('iframe');
aud.src = 'https://music.163.com/outchain/player?type=2&id=1927765047&auto=1&height=66';
aud.style.display = 'none';
bgBox.appendChild(aud);
function setRgb(){ return `rgba(${getNum(0,255)},${getNum(0,255)}, ${getNum(0,255)})`; }
function getNum(min,max){ return Math.floor(Math.random()*(max-min+1))+min; }
</script>
代码分享:<style>
.bgBox {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: 1280px;
height: 768px;
left: -342px;
background: #000 url('https://638183.freep.cn/638183/t22/51/laomiao.jpg') no-repeat;
overflow: hidden;
perspective: 3000px;
}
.ball {
position: absolute;
width: 24px;
height: 24px;
border-radius: 50%;
display: block;
transform-style: preserve-3d;
animation: fly var(--ss) linear infinite alternate;
}
.ball::before, .ball::after {
position: absolute;
content: '';
width: 24px;
height: 24px;
border-radius: 50%;
left: -10px;
top: 5px;
background: green;
animation: fly calc(var(--ss) + 1s) linear infinite;
}
.ball::after {
background: red;
animation: fly calc(var(--ss) + 2s) linear infinite;
}
@keyframes fly {
0% { transform: translate3d(0, 0, 0) scale(0.6); opacity: 0; }
50% { opacity: .6; }
100% { transform: translate3d(var(--tx), var(--ty), var(--tz)); opacity: 0; }
}
</style>
<div class="bgBox"></div>
<script>
let bgBox = document.querySelector('.bgBox');
let total = 200;
let sStr = '';
for(j=0; j<total; j++){
let ww = getNum(20,30);
let bg = `background: linear-gradient(120deg, ${setRgb()}, ${setRgb()}`;
let xx = getNum(-640,640);
let yy = getNum(-384,384) ;
sStr += `<span class='ball' style='--ss: ${getNum(4,10)}s; --tx: ${xx}px; --ty:${yy}px; --tz: ${getNum(10,100)}px; width: ${ww}px; height: ${ww}px; ${bg}'></span>`;
}
bgBox.innerHTML += sStr;
let aud = document.createElement('iframe');
aud.src = 'https://music.163.com/outchain/player?type=2&id=1927765047&auto=1&height=66';
aud.style.display = 'none';
bgBox.appendChild(aud);
function setRgb(){ return `rgba(${getNum(0,255)},${getNum(0,255)}, ${getNum(0,255)})`; }
function getNum(min,max){ return Math.floor(Math.random()*(max-min+1))+min; }
</script>
珠子多了:200*3=600
珠子改到极小,就是粒子效果的一种形态吧。 后续抛射原理:由于珠子多,在4~10(含4与10)中肯定存在好多珠子使用同一个关键帧运行周期时长的,故而后续还有抛射。
回落原理:animation语句中,使用了alternate,反向运行动画。 你真能,人家都是天女散花,你是天女散球?你球多。。。{:5_116:} 厉害厉害,又是黑洞原理,这个制作真漂亮。{:4_199:} 黑黑把这些珠子玩得出神入化,真漂亮的制作{:4_199:} 马黑黑 发表于 2022-5-17 07:24
代码分享:
还在想那--ss和--tx之类的都在哪里定义的,原来都在JS里呢,这个sStr的式子很巧妙{:4_204:} 马黑黑 发表于 2022-5-17 07:30
后续抛射原理:由于珠子多,在4~10(含4与10)中肯定存在好多珠子使用同一个关键帧运行周期时长的,故而后 ...
这样无穷的抛射和回落看着很玄幻{:4_199:} 醉美水芙蓉 发表于 2022-5-17 11:32
漂亮!谢谢黑黑老师!辛苦了!
喜欢吧 东篱闲人 发表于 2022-5-17 08:11
你真能,人家都是天女散花,你是天女散球?你球多。。。
散花污染环境,改改 红影 发表于 2022-5-17 11:21
这样无穷的抛射和回落看着很玄幻
没个完结的时候也烦人{:4_189:} 红影 发表于 2022-5-17 11:13
还在想那--ss和--tx之类的都在哪里定义的,原来都在JS里呢,这个sStr的式子很巧妙
--ss之类的是CSS变量赋值,它声明时是酱紫:var(--ss)
然后在CSS盒子中给出值:--ss: 10px;
也可以在 HTML中用 style 给CSS变量赋值:... style="--ss: 10px; ..." ....
JS就是利用 style 方法动态给CSS变量赋值的 红影 发表于 2022-5-17 11:11
黑黑把这些珠子玩得出神入化,真漂亮的制作
人家是大珠小珠落玉盘,俺这是小珠大珠随便玩
加林森 发表于 2022-5-17 09:16
厉害厉害,又是黑洞原理,这个制作真漂亮。
还行的吧 太漂亮了,我也去制作一个试试。 加林森 发表于 2022-5-17 12:44
太漂亮了,我也去制作一个试试。
O(∩_∩)O好的 马黑黑 发表于 2022-5-17 12:50
O(∩_∩)O好的
嗯嗯。 加林森 发表于 2022-5-17 12:52
嗯嗯。
{:4_180:}
页:
[1]
2