用pencilcode写了一个3d球
<style>#papa {
margin: 30px auto;
width: 760px;
height: 640px;
display: grid;
place-items: center;
position: relative;
}
.circle {
position: absolute;
width: 400px;
height: 400px;
border-radius: 50%;
border: 2px solid var(--bdcolor);
}
@keyframes rotZ {
0% { transform: perspective(2000px) rotateX(var(--degX1)) rotateY(var(--degY1)) rotateZ(0deg); }
100%{ transform: perspective(2000px) rotateX(var(--degX2)) rotateY(var(--degY2)) rotateZ(360deg); }
}
</style>
<div id="papa"></div>
<script>
let total = 50;
Array.from({length: total}).forEach( (item,key) => {
let sp = document.createElement('span');
sp.className = 'circle';
let aX = Math.random() * 360, aY = Math.random() * 360;
sp.style.cssText += `
--bdcolor: #${Math.random().toString(16).substr(-6)};
--degX1: ${aX}deg;
--degX2: ${aX + 360}deg;
--degY1: ${aY}deg;
--degY2: ${aY + 360}deg;
transform: perspective(2000px) rotateY(${aY}deg) rotateX(${aX}deg);
animation: rotZ 16s infinite linear;
`;
papa.appendChild(sp);
});
</script>
代码(请不要在本页测试,以免对一楼的演示产生干扰):
<style>
#papa {
margin: 30px auto;
width: 1024px;
height: 640px;
display: grid;
place-items: center;
position: relative;
}
.circle {
position: absolute;
width: 400px;
height: 400px;
border-radius: 50%;
border: 2px solid var(--bdcolor);
}
@keyframes rotZ {
0% { transform: perspective(2000px) rotateX(var(--degX1)) rotateY(var(--degY1)) rotateZ(0deg); }
100%{ transform: perspective(2000px) rotateX(var(--degX2)) rotateY(var(--degY2)) rotateZ(360deg); }
}
</style>
<div id="papa"></div>
<script>
let total = 50;
Array.from({length: total}).forEach( (item,key) => {
let sp = document.createElement('span');
sp.className = 'circle';
let aX = Math.random() * 360, aY = Math.random() * 360;
sp.style.cssText += `
--bdcolor: #${Math.random().toString(16).substr(-6)};
--degX1: ${aX}deg;
--degX2: ${aX + 360}deg;
--degY1: ${aY}deg;
--degY2: ${aY + 360}deg;
transform: perspective(2000px) rotateY(${aY}deg) rotateX(${aX}deg);
animation: rotZ 16s infinite linear;
`;
papa.appendChild(sp);
});
</script>
--degX2: ${aX + 360}deg; 怎么感觉任何一个角度加上360度还是它自身啊。 这个漂亮,各个角度都在转的感觉,可以做舞厅的灯球了{:4_173:} 黑黑总能带来耳目一新的新效果,这个太美了{:4_199:} 红影 发表于 2023-4-7 22:03
--degX2: ${aX + 360}deg; 怎么感觉任何一个角度加上360度还是它自身啊。
假如 ax = 21,则:
每一个圆圈转动的初始角度是 --degX1: 21deg; ,转一圈即 --degX2 的值则是:21 + 360
关键帧动画转完整一圈才能平滑。由于每一个圆圈的初始旋转角度不一样,所以设计了示例中的算法。 红影 发表于 2023-4-7 22:06
黑黑总能带来耳目一新的新效果,这个太美了
我用 doodle 插件做了一个帖,但目前论坛不支持:
http://mahei.freeee.ml/art/bshow.php?st=3&sd=3&art=1680869583 红影 发表于 2023-4-7 22:04
这个漂亮,各个角度都在转的感觉,可以做舞厅的灯球了
应该可以吧,做个装饰品背景也不错 马黑黑 发表于 2023-4-7 22:07
假如 ax = 21,则:
每一个圆圈转动的初始角度是 --degX1: 21deg; ,转一圈即 --degX2 的值则是:21 + ...
比如21度,无论加360还是720,都是一圈两圈后的原角度方向的吧。 马黑黑 发表于 2023-4-7 22:09
我用 doodle 插件做了一个帖,但目前论坛不支持:
http://mahei.freeee.ml/art/bshow.php?st=3&sd=3&a ...
哇,你帖子里的好像半径也不一样,还要漂亮。 马黑黑 发表于 2023-4-7 22:10
应该可以吧,做个装饰品背景也不错
看到你做成的帖子了,好漂亮啊{:4_187:} 红影 发表于 2023-4-7 22:35
看到你做成的帖子了,好漂亮啊
还行 红影 发表于 2023-4-7 22:35
哇,你帖子里的好像半径也不一样,还要漂亮。
doodle还是不错的 红影 发表于 2023-4-7 22:33
比如21度,无论加360还是720,都是一圈两圈后的原角度方向的吧。
旋转就是要头尾衔接的 黑黑老师棒棒哒!{:4_187:} 焱鑫磊 发表于 2023-4-7 23:50
黑黑老师棒棒哒!
谢谢支持。晚上好 这个很有趣的,点赞 马黑黑 发表于 2023-4-7 22:47
还行
看到这里也做了一个呢,更漂亮{:4_199:} 马黑黑 发表于 2023-4-7 22:48
doodle还是不错的
涂鸦,就算这里不能用,黑黑还是自己写了个,厉害{:4_199:} 马黑黑 发表于 2023-4-7 22:48
旋转就是要头尾衔接的
嗯嗯,这样才不乱。知道了{:4_204:}
页:
[1]
2