Yeah I finally did it !
A 100% pure CSS sphere :)
I'm kinda proud of myself with this pen :3
Thanks to @DeptofJeffAyer for helping me with the perspective <o/
A Pen by Louis Hoebregts on CodePen.
.mommy | |
.daddy | |
- for (var x = 1; x < 300; x++) | |
span |
Yeah I finally did it !
A 100% pure CSS sphere :)
I'm kinda proud of myself with this pen :3
Thanks to @DeptofJeffAyer for helping me with the perspective <o/
A Pen by Louis Hoebregts on CodePen.
@import "compass"; | |
body{ | |
margin: 0; | |
display: flex; | |
height: 100vh; | |
overflow: hidden; | |
justify-content: center; | |
align-items: center; | |
background:black; | |
} | |
.mommy{ | |
width: 500px; | |
height: 500px; | |
position: relative; | |
perspective: 800px; | |
} | |
.daddy{ | |
width: 500px; | |
height: 500px; | |
transform-style: preserve-3d; | |
animation : rotate 25s infinite linear; | |
} | |
span{ | |
display: inline-block; | |
position: absolute; | |
top:50%; | |
left:50%; | |
perspective: 800px; | |
transform-style: preserve-3d; | |
width: 0; | |
height: 0; | |
&:before{ | |
content:""; | |
width: 4px; | |
height: 4px; | |
display: inline-block; | |
position: absolute; | |
top: calc(50% - 2px); | |
left: calc(50% - 2px); | |
background: currentColor; | |
color: inherit; | |
border-radius: 50%; | |
animation: invertRotate 25s infinite linear, scale 2s infinite linear; | |
box-shadow: 0 0 10px currentColor; | |
} | |
} | |
$amount : 300; | |
@for $i from 1 through $amount { | |
$theta : ($i / $amount)*120; | |
$phi : ($i / $amount) * pi(); | |
$x : 250 * sin($phi) * cos($theta); | |
$y : 250 * sin($phi) * sin($theta); | |
$z : 250 * cos($phi); | |
.mommy span:nth-child(#{$i}){ | |
transform: translate3d($x+px, $y+px, $z+px); | |
color: hsl(($i/$amount)*360,100%,50%); | |
&:before{ | |
animation-delay: 0s, -($i/$amount)*2+s; | |
} | |
} | |
} | |
@keyframes rotate{ | |
to{transform:rotateY(360deg);} | |
} | |
@keyframes invertRotate{ | |
to{transform:rotateY(-360deg);} | |
} | |
@keyframes scale{ | |
0%, 45%,55%{ box-shadow: 0 0 10px 0px currentColor;} | |
50%{ box-shadow: 0 0 10px 5px currentColor;} | |
} |