|
|

楼主 |
发表于 2022-5-16 07:29
|
显示全部楼层
改进版的黑洞,和昨天在前院发的征名的帖子有所不同。代码如下:
- <style>
- .bgBox {
- position: relative;
- display: flex;
- justify-content: center;
- align-items: center;
- width: 760px;
- height: 600px;
- background: radial-gradient(rgb(0,0,0),rgba(0,0,0,.85));
- overflow: hidden;
- perspective: 1000px;
- }
- .ball {
- position: absolute;
- border-radius: 50%;
- display: block;
- transform-style: preserve-3d;
- animation: fly var(--ss) linear infinite;
- }
- @keyframes fly {
- 0% { transform: translate3d(var(--tx), var(--ty), var(--tz)); opacity: 0.1; }
- 20% { opacity: 1; }
- 100% { transform: translate3d(0, 0, 0) scale(0.6); opacity: 0; }
- }
- </style>
- <div class="bgBox"></div>
- <script>
- let total = 20; //小球总数
- let sStr = '';
- for(j=0; j<total; j++){
- let ww = getNum(20,30); //小球宽高
- let bg = `background: linear-gradient(120deg, ${setRgb()}, ${setRgb()}`; //小球背景色
- let xx = getNum(-600,600); //X坐标
- if(xx < 100 && xx > -100) xx = 200; //离原点若低于正负100
- let yy = getNum(-600,600); //Y坐标
- if(yy < 100 && yy > -100) yy = -200;
- let zz = getNum(10,100); //Z坐标
- let ss = getNum(5,10); //动画周期
- sStr += `<span class='ball' style='--ss: ${ss}s; --tx: ${xx}px; --ty:${yy}px; --tz: ${zz}px; width: ${ww}px; height: ${ww}px; ${bg}'></span>`;
- }
- document.querySelector('.bgBox').innerHTML += sStr;
- 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>
复制代码
|
|