- Dapatkan pautan
- X
- E-mel
- Apl Lain
Pamer
<div class="labu">
<div class="labi">
<div class="joget">
<i></i><i></i><i></i><i></i>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.labu *, .labu *::before, .labu *::after {
padding: 0;
margin: 0 auto;
box-sizing: border-box;
}
.labu {
background-image: radial-gradient(circle, #fff, #777 100vmin);
min-height: 88vh;
display: grid;
place-items: center;
perspective: 1600px;
overflow: hidden;
}
@media screen and (max-width: 600px) {
.labu {
min-height: 60vh;
}
}
.labu *:not(:empty) {
transform-style: preserve-3d;
}
.labi {
position: relative;
-webkit-animation: labi 20s infinite linear;
animation: labi 20s infinite linear;
}
@-webkit-keyframes labi {
from {
transform: rotate(0deg) rotateX(30deg) rotate(360deg);
}
to {
transform: rotate(360deg) rotateX(30deg) rotate(0deg);
}
}
@keyframes labi {
from {
transform: rotate(0deg) rotateX(30deg) rotate(360deg);
}
to {
transform: rotate(360deg) rotateX(30deg) rotate(0deg);
}
}
.joget {
position: relative;
font-size: 5vmin;
width: 2em;
aspect-ratio: 1;
-webkit-animation-name: joget;
animation-name: joget;
--background-color: #fff;
}
@-webkit-keyframes joget {
0% {
transform: rotate(0deg) scale(1);
}
25% {
transform: rotate(-22.5deg) scale(0.95);
}
50% {
transform: rotate(-45deg) scale(0.9);
}
75% {
transform: rotate(-67.5deg) scale(0.95);
}
100% {
transform: rotate(-90deg) scale(1);
}
}
@keyframes joget {
0% {
transform: rotate(0deg) scale(1);
}
25% {
transform: rotate(-22.5deg) scale(0.95);
}
50% {
transform: rotate(-45deg) scale(0.9);
}
75% {
transform: rotate(-67.5deg) scale(0.95);
}
100% {
transform: rotate(-90deg) scale(1);
}
}
.cube {
position: absolute;
width: 100%;
aspect-ratio: 1;
transform-origin: -1% -1%;
}
.cube_A {
left: 51%;
top: 51%;
-webkit-animation-name: cube_A;
animation-name: cube_A;
--background-color: hsl(calc(var(--i) * 90) 50% 56%);
}
.cube_A:nth-child(5) {
--i: 0;
}
.cube_A:nth-child(6) {
--i: 1;
}
.cube_A:nth-child(7) {
--i: 2;
}
.cube_A:nth-child(8) {
--i: 3;
}
@-webkit-keyframes cube_A {
0% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(0deg);
}
50% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(90deg);
}
100% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(180deg);
}
}
@keyframes cube_A {
0% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(0deg);
}
50% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(90deg);
}
100% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(180deg);
}
}
.cube_B {
left: 102%;
top: 0%;
-webkit-animation-name: cube_negative;
animation-name: cube_negative;
--background-color: hsl(calc(var(--i) * 90 - 45) 50% 56%);
}
.cube_C {
left: 102%;
top: 0%;
transform-origin: -1% 101%;
-webkit-animation-name: cube_positive;
animation-name: cube_positive;
--background-color: hsl(calc(var(--i) * 90 - 67.5) 100% 56%);
}
.cube_D {
left: 0%;
top: 102%;
transform-origin: 101% -1%;
-webkit-animation-name: cube_negative;
animation-name: cube_negative;
--background-color: hsl(calc(var(--i) * 90) 100% 56%);
}
.cube_E {
left: 102%;
top: 0%;
transform-origin: -1% 101%;
-webkit-animation-name: cube_positive;
animation-name: cube_positive;
--background-color: hsl(calc(var(--i) * 90 - 22.5) 100% 56%);
}
.cube_F {
left: 102%;
top: 0%;
-webkit-animation-name: cube_negative;
animation-name: cube_negative;
--background-color: hsl(calc(var(--i) * 90 - 45) 100% 56%);
}
@-webkit-keyframes cube_negative {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(-90deg);
}
100% {
transform: rotate(-180deg);
}
}
@keyframes cube_negative {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(-90deg);
}
100% {
transform: rotate(-180deg);
}
}
@-webkit-keyframes cube_positive {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(90deg);
}
100% {
transform: rotate(180deg);
}
}
@keyframes cube_positive {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(90deg);
}
100% {
transform: rotate(180deg);
}
}
.joget, .cube {
box-shadow: 0 0 2em #000a, 0 0 1em #000a inset;
-webkit-animation-duration: 8s;
animation-duration: 8s;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
animation-direction: alternate;
-webkit-animation-timing-function: cubic-bezier(0.6, 0, 0.4, 1);
animation-timing-function: cubic-bezier(0.6, 0, 0.4, 1);
}
.joget i, .cube i {
position: absolute;
inset: 0;
background-color: var(--background-color);
background-image: linear-gradient(transparent, #000a);
box-shadow: 0 0 1em #000a inset;
}
.joget i:nth-child(1), .cube i:nth-child(1) {
transform: rotateX(-90deg) rotateY(0deg) translateZ(1em) translateY(-1em);
}
.joget i:nth-child(2), .cube i:nth-child(2) {
transform: rotateX(-90deg) rotateY(90deg) translateZ(1em) translateY(-1em);
}
.joget i:nth-child(3), .cube i:nth-child(3) {
transform: rotateX(-90deg) rotateY(180deg) translateZ(1em) translateY(-1em);
}
.joget i:nth-child(4), .cube i:nth-child(4) {
transform: rotateX(-90deg) rotateY(270deg) translateZ(1em) translateY(-1em);
}
</style>
<div class="labi">
<div class="joget">
<i></i><i></i><i></i><i></i>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
<div class="cube cube_A">
<i></i><i></i><i></i><i></i>
<div class="cube cube_B">
<i></i><i></i><i></i><i></i>
<div class="cube cube_C">
<i></i><i></i><i></i><i></i>
</div>
</div>
<div class="cube cube_D">
<i></i><i></i><i></i><i></i>
<div class="cube cube_E">
<i></i><i></i><i></i><i></i>
<div class="cube cube_F">
<i></i><i></i><i></i><i></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.labu *, .labu *::before, .labu *::after {
padding: 0;
margin: 0 auto;
box-sizing: border-box;
}
.labu {
background-image: radial-gradient(circle, #fff, #777 100vmin);
min-height: 88vh;
display: grid;
place-items: center;
perspective: 1600px;
overflow: hidden;
}
@media screen and (max-width: 600px) {
.labu {
min-height: 60vh;
}
}
.labu *:not(:empty) {
transform-style: preserve-3d;
}
.labi {
position: relative;
-webkit-animation: labi 20s infinite linear;
animation: labi 20s infinite linear;
}
@-webkit-keyframes labi {
from {
transform: rotate(0deg) rotateX(30deg) rotate(360deg);
}
to {
transform: rotate(360deg) rotateX(30deg) rotate(0deg);
}
}
@keyframes labi {
from {
transform: rotate(0deg) rotateX(30deg) rotate(360deg);
}
to {
transform: rotate(360deg) rotateX(30deg) rotate(0deg);
}
}
.joget {
position: relative;
font-size: 5vmin;
width: 2em;
aspect-ratio: 1;
-webkit-animation-name: joget;
animation-name: joget;
--background-color: #fff;
}
@-webkit-keyframes joget {
0% {
transform: rotate(0deg) scale(1);
}
25% {
transform: rotate(-22.5deg) scale(0.95);
}
50% {
transform: rotate(-45deg) scale(0.9);
}
75% {
transform: rotate(-67.5deg) scale(0.95);
}
100% {
transform: rotate(-90deg) scale(1);
}
}
@keyframes joget {
0% {
transform: rotate(0deg) scale(1);
}
25% {
transform: rotate(-22.5deg) scale(0.95);
}
50% {
transform: rotate(-45deg) scale(0.9);
}
75% {
transform: rotate(-67.5deg) scale(0.95);
}
100% {
transform: rotate(-90deg) scale(1);
}
}
.cube {
position: absolute;
width: 100%;
aspect-ratio: 1;
transform-origin: -1% -1%;
}
.cube_A {
left: 51%;
top: 51%;
-webkit-animation-name: cube_A;
animation-name: cube_A;
--background-color: hsl(calc(var(--i) * 90) 50% 56%);
}
.cube_A:nth-child(5) {
--i: 0;
}
.cube_A:nth-child(6) {
--i: 1;
}
.cube_A:nth-child(7) {
--i: 2;
}
.cube_A:nth-child(8) {
--i: 3;
}
@-webkit-keyframes cube_A {
0% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(0deg);
}
50% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(90deg);
}
100% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(180deg);
}
}
@keyframes cube_A {
0% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(0deg);
}
50% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(90deg);
}
100% {
transform: rotate(calc(var(--i) * 90deg)) translate(-51%, 51%) rotate(180deg);
}
}
.cube_B {
left: 102%;
top: 0%;
-webkit-animation-name: cube_negative;
animation-name: cube_negative;
--background-color: hsl(calc(var(--i) * 90 - 45) 50% 56%);
}
.cube_C {
left: 102%;
top: 0%;
transform-origin: -1% 101%;
-webkit-animation-name: cube_positive;
animation-name: cube_positive;
--background-color: hsl(calc(var(--i) * 90 - 67.5) 100% 56%);
}
.cube_D {
left: 0%;
top: 102%;
transform-origin: 101% -1%;
-webkit-animation-name: cube_negative;
animation-name: cube_negative;
--background-color: hsl(calc(var(--i) * 90) 100% 56%);
}
.cube_E {
left: 102%;
top: 0%;
transform-origin: -1% 101%;
-webkit-animation-name: cube_positive;
animation-name: cube_positive;
--background-color: hsl(calc(var(--i) * 90 - 22.5) 100% 56%);
}
.cube_F {
left: 102%;
top: 0%;
-webkit-animation-name: cube_negative;
animation-name: cube_negative;
--background-color: hsl(calc(var(--i) * 90 - 45) 100% 56%);
}
@-webkit-keyframes cube_negative {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(-90deg);
}
100% {
transform: rotate(-180deg);
}
}
@keyframes cube_negative {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(-90deg);
}
100% {
transform: rotate(-180deg);
}
}
@-webkit-keyframes cube_positive {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(90deg);
}
100% {
transform: rotate(180deg);
}
}
@keyframes cube_positive {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(90deg);
}
100% {
transform: rotate(180deg);
}
}
.joget, .cube {
box-shadow: 0 0 2em #000a, 0 0 1em #000a inset;
-webkit-animation-duration: 8s;
animation-duration: 8s;
-webkit-animation-iteration-count: infinite;
animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
animation-direction: alternate;
-webkit-animation-timing-function: cubic-bezier(0.6, 0, 0.4, 1);
animation-timing-function: cubic-bezier(0.6, 0, 0.4, 1);
}
.joget i, .cube i {
position: absolute;
inset: 0;
background-color: var(--background-color);
background-image: linear-gradient(transparent, #000a);
box-shadow: 0 0 1em #000a inset;
}
.joget i:nth-child(1), .cube i:nth-child(1) {
transform: rotateX(-90deg) rotateY(0deg) translateZ(1em) translateY(-1em);
}
.joget i:nth-child(2), .cube i:nth-child(2) {
transform: rotateX(-90deg) rotateY(90deg) translateZ(1em) translateY(-1em);
}
.joget i:nth-child(3), .cube i:nth-child(3) {
transform: rotateX(-90deg) rotateY(180deg) translateZ(1em) translateY(-1em);
}
.joget i:nth-child(4), .cube i:nth-child(4) {
transform: rotateX(-90deg) rotateY(270deg) translateZ(1em) translateY(-1em);
}
</style>
Rujukan CSS di codepen.io/amit_sheen/pen/XWGpJOV
Catatan oleh
Orandableg
- Dapatkan pautan
- X
- E-mel
- Apl Lain
Ulasan