WEBLEB
होम
संपादक
लॉग इन करें
Pro
हिंदी
English
Français
Español
Português
Deutsch
Italiano
हिंदी
भूकेन्द्रित ब्रह्मांड
1655
Andev.web
संपादक में खोलें
अपना कोड प्रकाशित करें
अनुशंसित
1 June 2025
ब्रह्मांड
HTML
Copy
Andev Web
CSS
Copy
:root { --pov: 66deg; --day: 14s; --sun-orbit-progress: .7; --circle-delay: calc(var(--day) / 3.97); --circular-ease: cubic-bezier(.37, 0, .63, 1); --bg-color: #111; --orbit-sphere-color: hsla(260, 80%, 60%, .6); --orbit-line-color: hsl(260 50% 66%); --orbit-line-thickness: .15rem; --orbit-plane-color: radial-gradient( circle at center, hsla(250, 70%, 75%, .025), hsla(250, 70%, 75%, .15) ); --moon-orbit-size: 12dvmin; --mercury-orbit-size: 24dvmin; --venus-orbit-size: 36dvmin; --sun-orbit-size: 48dvmin; --mars-orbit-size: 60dvmin; --jupiter-orbit-size: 72dvmin; --saturn-orbit-size: 84dvmin; --stars-orbit-size: 96dvmin; --number-of-bodies: 10; } body { height: 100dvh; margin: 0; background: var(--bg-color); overflow: hidden; } .universe { height: 100%; perspective: 50000px; translate: 0 -5%; position: relative; } /* orbit line */ :nth-child(1 of :is(.orbit)) { --i: 0; } :nth-child(2 of :is(.orbit)) { --i: 1; } :nth-child(3 of :is(.orbit)) { --i: 2; } :nth-child(4 of :is(.orbit)) { --i: 3; } :nth-child(5 of :is(.orbit)) { --i: 4; } :nth-child(6 of :is(.orbit)) { --i: 5; } :nth-child(7 of :is(.orbit)) { --i: 6; } :nth-child(8 of :is(.orbit)) { --i: 7; } .orbit { --enter-delay: calc(.1s + var(--i) * (1s / 6)); position: absolute; top: 50%; left: 50%; width: var(--size, 30dvmin); height: var(--size, 30dvmin); border-radius: 50%; background: var(--orbit-plane-color); box-shadow: 0 0 0 var(--orbit-line-thickness) var(--orbit-line-color); transform-style: preserve-3d; rotate: x var(--pov); translate: -50% -40%; opacity: 0; -webkit-animation: orbit-appear 1.5s var(--enter-delay, .1s) forwards; animation: orbit-appear 1.5s var(--enter-delay, .1s) forwards; } @-webkit-keyframes orbit-appear { to { opacity: 1; translate: -50% -50%; } } @keyframes orbit-appear { to { opacity: 1; translate: -50% -50%; } } /* orbit semi-sphere */ .orbit::after { --cutout: calc(var(--size) / 2 + var(--orbit-line-thickness)); content: ""; position: absolute; top: -75%; left: calc(-1 * var(--orbit-line-thickness)); width: calc(100% + var(--orbit-line-thickness) * 2); height: 250%; background: radial-gradient( circle var(--cutout) at center, #0000 99.9%, var(--orbit-sphere-color) ); border-radius: 50%; -webkit-clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%); clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%); } .orbit.moon { --size: var(--moon-orbit-size); } .orbit.mercury { --size: var(--mercury-orbit-size); } .orbit.venus { --size: var(--venus-orbit-size); } .orbit.sun { --size: var(--sun-orbit-size); } .orbit.mars { --size: var(--mars-orbit-size); } .orbit.jupiter { --size: var(--jupiter-orbit-size); } .orbit.saturn { --size: var(--saturn-orbit-size); } .orbit.stars { --size: var(--stars-orbit-size); --orbit-sphere-color: hsla(260, 80%, 20%, .6); --orbit-line-color: hsl(260 50% 60%); } .orbit.stars .star { --size: 8dvmin; --astronomical-unit: calc( var(--stars-orbit-size) / 2 - (var(--y) * var(--y)) * 14dvmin ); --star-x-delay: calc(var(--j) * -.5s); content: ""; position: absolute; z-index: 1; bottom: -8%; left: calc(50% + var(--astronomical-unit)); width: calc(var(--size) * cos(var(--pov))); height: var(--size); background: #fff0ea99; mix-blend-mode: color-dodge; -webkit-clip-path: polygon( 50% 0, 55% 45%, 100% 50%, 55% 55%, 50% 100%, 45% 55%, 0% 50%, 45% 45% ); clip-path: polygon( 50% 0, 55% 45%, 100% 50%, 55% 55%, 50% 100%, 45% 55%, 0% 50%, 45% 45% ); translate: -50% calc(-50% + var(--y) * 800%); rotate: x calc(var(--y) * 80deg); scale: calc(1 - var(--y) / 1.5) calc(1 - var(--y) / 2); transform-style: preserve-3d; -webkit-animation: star-rise-and-shine var(--day) var(--star-x-delay) infinite, star-move-x var(--day) var(--star-x-delay) infinite var(--circular-ease), star-move-y var(--day) calc(0s - var(--circle-delay) + var(--star-x-delay)) infinite var(--circular-ease); animation: star-rise-and-shine var(--day) var(--star-x-delay) infinite, star-move-x var(--day) var(--star-x-delay) infinite var(--circular-ease), star-move-y var(--day) calc(0s - var(--circle-delay) + var(--star-x-delay)) infinite var(--circular-ease); } @-webkit-keyframes star-rise-and-shine { from, 52%, to { opacity: 0; } 60%, 93% { opacity: 1; } 63%, 67%, 71%, 76%, 81%, 86%, 91% { opacity: 1; } 61%, 65%, 69%, 73%, 78%, 83%, 89% { opacity: max(.3, sin(var(--j))); } } @keyframes star-rise-and-shine { from, 52%, to { opacity: 0; } 60%, 93% { opacity: 1; } 63%, 67%, 71%, 76%, 81%, 86%, 91% { opacity: 1; } 61%, 65%, 69%, 73%, 78%, 83%, 89% { opacity: max(.3, sin(var(--j))); } } @-webkit-keyframes star-move-x { from, to { transform: rotateY(-70deg); } 50% { transform: rotateY(70deg); left: calc(50% - var(--astronomical-unit)); } } @keyframes star-move-x { from, to { transform: rotateY(-70deg); } 50% { transform: rotateY(70deg); left: calc(50% - var(--astronomical-unit)); } } @-webkit-keyframes star-move-y { 50% { bottom: calc(50% + var(--astronomical-unit) * cos(var(--pov))); } } @keyframes star-move-y { 50% { bottom: calc(50% + var(--astronomical-unit) * cos(var(--pov))); } } :nth-child(1 of :is(.body, .body-container)) { --i: 0; } :nth-child(2 of :is(.body, .body-container)) { --i: 1; } :nth-child(3 of :is(.body, .body-container)) { --i: 2; } :nth-child(4 of :is(.body, .body-container)) { --i: 3; } :nth-child(5 of :is(.body, .body-container)) { --i: 4; } :nth-child(6 of :is(.body, .body-container)) { --i: 5; } :nth-child(7 of :is(.body, .body-container)) { --i: 6; } :nth-child(8 of :is(.body, .body-container)) { --i: 7; } :nth-child(9 of :is(.body, .body-container)) { --i: 8; } :nth-child(10 of :is(.body, .body-container)) { --i: 8; } .body, .body-container { --inner-orbit: 0; --orbit-progress: 0; --sunlight-delay: calc(var(--sun-orbit-progress) * var(--day) * -1); --orbit-delay: calc(var(--orbit-progress) * var(--day) * -1); --inverse-index: calc(var(--number-of-bodies) - var(--i)); --shine-delay: calc( (var(--sunlight-delay) + var(--orbit-delay)) - (var(--day) * var(--inner-orbit)) ); --anim-body-reveal: body-reveal 1.5s calc(1s + .09s * var(--i)) forwards; --anim-body-index: body-index var(--day) var(--orbit-delay) infinite; --anim-body-shine: body-shine var(--day) var(--shine-delay) linear infinite; --anim-body-move-x: body-move-x var(--day) var(--orbit-delay) infinite var(--circular-ease); --anim-body-move-y: body-move-y var(--day) calc(var(--orbit-delay) - var(--circle-delay)) infinite var(--circular-ease); position: absolute; left: calc(50% + var(--astronomical-unit)); top: 0; opacity: 0; translate: -50% calc(-50% - (50% * sin(var(--pov)))); width: var(--size); height: var(--size); background: radial-gradient( circle at center, var(--color-1, darkgray), var(--color-2, #333) 60% ); background-size: 300%; background-position: center; border-radius: 50%; -webkit-animation: var(--anim-body-reveal), var(--anim-body-index), var(--anim-body-shine), var(--anim-body-move-x), var(--anim-body-move-y); animation: var(--anim-body-reveal), var(--anim-body-index), var(--anim-body-shine), var(--anim-body-move-x), var(--anim-body-move-y); } @-webkit-keyframes body-reveal { to { top: calc(50% + var(--astronomical-unit) * cos(var(--pov))); opacity: 1; } } @keyframes body-reveal { to { top: calc(50% + var(--astronomical-unit) * cos(var(--pov))); opacity: 1; } } @-webkit-keyframes body-index { from, 49% { z-index: var(--inverse-index); } 50%, to { z-index: 0; } } @keyframes body-index { from, 49% { z-index: var(--inverse-index); } 50%, to { z-index: 0; } } @-webkit-keyframes body-shine { to { background-position-x: -100%; } } @keyframes body-shine { to { background-position-x: -100%; } } @-webkit-keyframes body-move-x { 50% { left: calc(50% - var(--astronomical-unit)); } } @keyframes body-move-x { 50% { left: calc(50% - var(--astronomical-unit)); } } @-webkit-keyframes body-move-y { 50% { top: calc(50% - var(--astronomical-unit) * cos(var(--pov))); } } @keyframes body-move-y { 50% { top: calc(50% - var(--astronomical-unit) * cos(var(--pov))); } } .body-container.earth, .body-container.moon, .body-container.mercury, .venus { --inner-orbit: 1; } .body-container.earth { --size: 4dvmin; --color-1: #67aecb; --color-2: mediumblue; --astronomical-unit: 0%; --orbit-progress: calc(1 - var(--sun-orbit-progress)); -webkit-animation: var(--anim-body-reveal), var(--anim-body-index), var(--anim-body-shine), earth-night var(--day) var(--shine-delay) linear infinite; animation: var(--anim-body-reveal), var(--anim-body-index), var(--anim-body-shine), earth-night var(--day) var(--shine-delay) linear infinite; } @-webkit-keyframes earth-night { 50% { box-shadow: inset 0 0 var(--size) calc(var(--size) / 5) #000b; } } @keyframes earth-night { 50% { box-shadow: inset 0 0 var(--size) calc(var(--size) / 5) #000b; } } .body-container.earth .human-lights { --color: #fd08; --px: .7em; --light: 0 var(--px) var(--color); --this-mad-city: 0 var(--px) palevioletred; font-size: calc(var(--size) / 50); position: absolute; top: 50%; left: 50%; display: block; width: 1em; height: 1em; translate: -50% -50%; border-radius: 50%; opacity: 0; mix-blend-mode: difference; box-shadow: -5em -16em var(--light), -4em -15em var(--light), -3em -16em var(--light), -5em -14em var(--light), -6em -13em var(--light), -3em -14em var(--light), -2em -13em var(--light), -1em -18em var(--light), -1em -16em var(--light), -2em -16em var(--light), 1em -15em var(--light), 0em -15em var(--light), 2em -15em var(--light), 4em -14em var(--light), 8em -11em var(--light), 6em -12em var(--this-mad-city), 8em -8em var(--light), 7em -5em var(--light), 4em -19em var(--light), 8em -17em var(--light), 1em -13em var(--light), 8em -6em var(--light), 4em -4em var(--light), 17em -10em var(--light), 19em -7em var(--light), -1em -4em var(--light), 2em -4em var(--light), 6em -1em var(--light), 5em -3em var(--light), 6em 1em var(--light); -webkit-animation: earth-human-lights var(--day) var(--shine-delay) linear infinite; animation: earth-human-lights var(--day) var(--shine-delay) linear infinite; } @-webkit-keyframes earth-human-lights { 50% { opacity: 1; } } @keyframes earth-human-lights { 50% { opacity: 1; } } .body-container.earth::before, .body-container.earth::after { content: ""; position: absolute; top: 50%; left: 50%; } /* continent */ .body-container.earth::before { translate: -45% -40%; width: calc(var(--size) / 2); height: calc(var(--size) / 1.8); border-radius: 50% 100%; -webkit-clip-path: polygon( 0 0, 100% 0, 70% 100%, 30% 100%, 25% 40%, 3% 35%, 0 30%, 3% 10%, 4% 0 ); clip-path: polygon( 0 0, 100% 0, 70% 100%, 30% 100%, 25% 40%, 3% 35%, 0 30%, 3% 10%, 4% 0 ); background: linear-gradient( to bottom, palegoldenrod 30%, darkgreen 60%, sienna ); mix-blend-mode: soft-light; filter: blur(.1dvmin); } /* clouds */ .body-container.earth::after { width: 100%; height: 100%; translate: -50% -50%; border-radius: 50%; background: repeating-radial-gradient( circle at 50% 0%, #fff4 3%, #fff4 10%, #0000 11%, #0000 40%, #fff4 60%, #0000 80%, #0000 100% ), repeating-radial-gradient( ellipse calc(var(--size) / 1.5) calc(var(--size) / 6) at 30% 90%, #fff4, #fffa 1%, transparent 3%, #fff9 5%, transparent 7%, #fff4 9%, transparent 11%, transparent 100% ); background-size: 200% 100%; background-position: right center; filter: blur(.1dvmin); mix-blend-mode: hard-light; -webkit-animation: earth-clouds calc(var(--day) * 3.1) linear infinite; animation: earth-clouds calc(var(--day) * 3.1) linear infinite; } @-webkit-keyframes earth-clouds { to { background-position-x: -100%; } } @keyframes earth-clouds { to { background-position-x: -100%; } } .body-container.moon { --size: 2dvmin; --color-1: #eee; --color-2: #333; --astronomical-unit: calc(var(--moon-orbit-size) / 2); --orbit-progress: .2; overflow: hidden; } .body-container.moon .crater { position: absolute; top: var(--y); left: var(--x); z-index: 1; translate: 0 -50%; width: calc(var(--size) * 100%); height: calc(var(--size) * 100%); background: #0003; transform-style: preserve-3d; transform-origin: left center; rotate: x calc(90deg - var(--pov)); border-radius: 50%; box-shadow: .1dvmin .1dvmin .1dvmin #fff7, -.1dvmin -.1dvmin .1dvmin #0009; -webkit-animation: moon-crater var(--day) calc(var(--day) / -2.2) linear infinite; animation: moon-crater var(--day) calc(var(--day) / -2.2) linear infinite; } @-webkit-keyframes moon-crater { from { z-index: 1; transform: translateX( calc(1 / var(--size) * -100%) ) rotateY(-90deg); } 99.9% { z-index: 1; transform: translateX( calc(1 / var(--size) * 100%) ) rotateY(90deg); } to { z-index: 0; } } @keyframes moon-crater { from { z-index: 1; transform: translateX( calc(1 / var(--size) * -100%) ) rotateY(-90deg); } 99.9% { z-index: 1; transform: translateX( calc(1 / var(--size) * 100%) ) rotateY(90deg); } to { z-index: 0; } } .body-container.moon .crater-1 { --size: .3; --x: 30%; --y: 20%; } .body-container.moon .crater-2 { --size: .2; --x: 66%; --y: 55%; } .body-container.moon .crater-3 { --size: .15; --x: 55%; --y: 40%; } .body-container.moon .crater-4 { --size: .25; --x: 27%; --y: 50%; } .body-container.moon .crater-5 { --size: .1; --x: 60%; --y: 70%; } .body-container.moon .crater-6 { --size: .1; --x: 20%; --y: 40%; } .body-container.mercury { --size: 2dvmin; --color-1: #eed; --color-2: #443; --astronomical-unit: calc(var(--mercury-orbit-size) / 2); --orbit-progress: .35; overflow: hidden; } .body-container.mercury .crater { position: absolute; top: var(--y); left: var(--x); z-index: 1; rotate: x calc(90deg - var(--pov)); translate: 0 -50%; transform-style: preserve-3d; transform-origin: left center; width: calc(var(--size) * 100%); height: calc(var(--size) * 100%); background: #fff7; border-radius: 50%; box-shadow: inset 0 0 .1dvmin .02dvmin #0009; -webkit-animation: mercury-crater var(--day) calc(var(--day) / -2) linear infinite; animation: mercury-crater var(--day) calc(var(--day) / -2) linear infinite; } @-webkit-keyframes mercury-crater { from { z-index: 1; transform: translateX( calc(1 / var(--size) * -100%) ) rotateY(-90deg); } 99.9% { z-index: 1; transform: translateX( calc(1 / var(--size) * 100%) ) rotateY(90deg); } to { z-index: 0; } } @keyframes mercury-crater { from { z-index: 1; transform: translateX( calc(1 / var(--size) * -100%) ) rotateY(-90deg); } 99.9% { z-index: 1; transform: translateX( calc(1 / var(--size) * 100%) ) rotateY(90deg); } to { z-index: 0; } } .body-container.mercury .crater-1 { --size: .1; --x: 35%; --y: 21%; } .body-container.mercury .crater-2 { --size: .15; --x: 68%; --y: 35%; } .body-container.mercury .crater-3 { --size: .17; --x: 50%; --y: 42%; } .body-container.mercury .crater-4 { --size: .12; --x: 22%; --y: 75%; } .body-container.mercury .crater-5 { --size: .2; --x: 37%; --y: 53%; } .body-container.mercury .crater-6 { --size: .16; --x: 17%; --y: 79%; } .body-container.mercury .crater-7 { --size: .13; --x: 18%; --y: 23%; } .body-container.mercury .crater-8 { --size: .17; --x: 83%; --y: 38%; } .body-container.mercury .crater-9 { --size: .11; --x: 60%; --y: 18%; } .body-container.mercury .crater-10 { --size: .1; --x: 42%; --y: 70%; } .body-container.mercury .crater-11 { --size: .14; --x: 75%; --y: 65%; } .body-container.mercury .crater-12 { --size: .2; --x: 86%; --y: 60%; } .body-container.mercury .crater-13 { --size: .15; --x: 76%; --y: 73%; } .body-container.mercury .crater-14 { --size: .14; --x: 20%; --y: 50%; } .body-container.mercury .crater-15 { --size: .17; --x: 27%; --y: 22%; } .body-container.mercury .crater-16 { --size: .11; --x: 16%; --y: 73%; } .body.venus { --size: 4dvmin; --color-1: #eed; --color-2: #553; --astronomical-unit: calc(var(--venus-orbit-size) / 2); --orbit-progress: .3; } .body.sun { --size: 6dvmin; --color-1: #fb3; --color-2: yellow; --astronomical-unit: calc(var(--sun-orbit-size) / 2); --orbit-progress: var(--sun-orbit-progress); box-shadow: 0 0 1dvmin .2dvmin #ffd, 0 0 3dvmin 1dvmin #fa3; -webkit-animation: var(--anim-body-reveal), var(--anim-body-index), var(--anim-body-move-x), var(--anim-body-move-y); animation: var(--anim-body-reveal), var(--anim-body-index), var(--anim-body-move-x), var(--anim-body-move-y); } .body-container.mars { --size: 3dvmin; --color-1: darkorange; --color-2: #750; --astronomical-unit: calc(var(--mars-orbit-size) / 2); --orbit-progress: .6; overflow: hidden; } .body-container.mars .ice-cap { position: absolute; width: calc(var(--size) / 2.5); height: calc(var(--size) / 2.5); top: 0; left: 50%; translate: -50% -40%; rotate: x var(--pov); background: radial-gradient( circle at center, #fff8, transparent ); mix-blend-mode: overlay; border-radius: 50%; -webkit-clip-path: polygon( 0 0, 30% 0, 32% 40%, 34% 0, 60% 0, 82% 60%, 84% 5%, 90% 25%, 70% 27%, 88% 30%, 95% 70%, 60% 71%, 93% 76%, 100% 100%, 66% 66%, 33% 90%, 0 100% ); clip-path: polygon( 0 0, 30% 0, 32% 40%, 34% 0, 60% 0, 82% 60%, 84% 5%, 90% 25%, 70% 27%, 88% 30%, 95% 70%, 60% 71%, 93% 76%, 100% 100%, 66% 66%, 33% 90%, 0 100% ); -webkit-animation: mars-ice-cap var(--day) linear infinite; animation: mars-ice-cap var(--day) linear infinite; } @-webkit-keyframes mars-ice-cap { to { transform: rotate(-1turn); } } @keyframes mars-ice-cap { to { transform: rotate(-1turn); } } .body-container.mars::before, .body-container.mars::after { content: ""; position: absolute; top: 50%; left: 50%; filter: blur(1.33dvmin); background: #1a1300ff; mix-blend-mode: hard-light; -webkit-animation: mars-surface var(--day) linear infinite; animation: mars-surface var(--day) linear infinite; } @-webkit-keyframes mars-surface { from { transform: translateX(-200%); } to { transform: translateX(200%); } } @keyframes mars-surface { from { transform: translateX(-200%); } to { transform: translateX(200%); } } .body-container.mars::before { translate: -10% -20%; width: calc(var(--size) / 3.5); height: calc(var(--size) / 1.8); -webkit-clip-path: polygon( 5% 19%, 32% 32%, 65% 39%, 83% 38%, 98% 48%, 90% 65%, 78% 64%, 66% 77%, 56% 69%, 47% 67%, 32% 72%, 19% 76%, 8% 68%, 4% 53%, 2% 39% ); clip-path: polygon( 5% 19%, 32% 32%, 65% 39%, 83% 38%, 98% 48%, 90% 65%, 78% 64%, 66% 77%, 56% 69%, 47% 67%, 32% 72%, 19% 76%, 8% 68%, 4% 53%, 2% 39% ); } .body-container.mars::after { translate: -70% -40%; width: calc(var(--size) / 2.6); height: calc(var(--size) / 3.5); -webkit-clip-path: polygon( 5% 19%, 32% 32%, 65% 39%, 83% 38%, 98% 48%, 90% 65%, 78% 64%, 66% 77%, 56% 69%, 47% 67%, 32% 72%, 19% 76%, 8% 68%, 4% 53%, 2% 39% ); clip-path: polygon( 5% 19%, 32% 32%, 65% 39%, 83% 38%, 98% 48%, 90% 65%, 78% 64%, 66% 77%, 56% 69%, 47% 67%, 32% 72%, 19% 76%, 8% 68%, 4% 53%, 2% 39% ); } .body.jupiter { --size: 5dvmin; --color-1: #9f938f; --color-2: #321; --astronomical-unit: calc(var(--jupiter-orbit-size) / 2); --orbit-progress: .4; overflow: hidden; } .body.jupiter::after { --great-red-spot-width: calc(var(--size) / 8); --great-red-spot-height: calc(var(--size) / 10); content: ""; position: absolute; inset: 0; border-radius: 50%; background: radial-gradient( ellipse 140% 100% at center -5%, transparent 38%, #6526 41%, #6526 44%, transparent 45%, transparent 46%, #652a 46%, #652a 52%, transparent 53%, transparent 58%, #652a 60%, #652a 66%, transparent 67% ); background-size: 200% 200%; background-position: center center; mix-blend-mode: soft-light; } .body.jupiter::before { --great-red-spot-width: calc(var(--size) / 10); --great-red-spot-height: calc(var(--size) / 12); content: ""; position: absolute; z-index: 1; inset: 0; border-radius: 50%; box-shadow: inset 0 0 calc(var(--size) / 2) var(--color-1); background: radial-gradient( ellipse var(--great-red-spot-width) var(--great-red-spot-height) at 70% 68%, #5329, transparent ), radial-gradient( ellipse calc(var(--great-red-spot-width) / 2.5) calc(var(--great-red-spot-height) / 2.5) at 80% 60%, #fec6, transparent ), radial-gradient( ellipse calc(var(--great-red-spot-width) / 2.3) calc(var(--great-red-spot-height) / 2.3) at 45% 63%, #fec6, transparent ), radial-gradient( ellipse calc(var(--great-red-spot-width) / 2.1) calc(var(--great-red-spot-height) / 2.1) at 30% 36%, #fec6, transparent ); background-size: 200% 100%; background-position: center center; mix-blend-mode: overlay; -webkit-animation: jupiter-clouds var(--day) calc(var(--day) / -1.2) linear infinite; animation: jupiter-clouds var(--day) calc(var(--day) / -1.2) linear infinite; } @-webkit-keyframes jupiter-clouds { from { background-position-x: left; } to { background-position-x: -200%; } } @keyframes jupiter-clouds { from { background-position-x: left; } to { background-position-x: -200%; } } .body-container.saturn { --size: 5dvmin; --color-1: #cb9; --color-2: #531; --astronomical-unit: calc(var(--saturn-orbit-size) / 2); --orbit-progress: .1; --ring-a-size: 180%; --ring-a-color: var(--color-1); --ring-b-size: 200%; --ring-b-color: var(--color-1); } .body-container.saturn .body-copy, .body-container.saturn .storms { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: inherit; border-radius: inherit; } .body-container.saturn .storms { overflow: hidden; } .body-container.saturn .storm { position: absolute; width: var(--size); height: var(--size); top: 0; left: 50%; translate: -50% var(--y); rotate: x var(--pov); border-radius: inherit; mix-blend-mode: overlay; -webkit-clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%); clip-path: polygon(0 50%, 100% 50%, 100% 100%, 0 100%); background: var(--bg); filter: blur(var(--fuzz)); } .body-container.saturn .storm:nth-child(1) { --y: -60%; --fuzz: .1dvmin; --bg: radial-gradient( circle at center, transparent 20%, #1323 40%, transparent ); } .body-container.saturn .storm:nth-child(2) { --y: -35%; --fuzz: .1dvmin; --bg: radial-gradient( circle at center, transparent 55%, #3213 ); } .body-container.saturn .storm:nth-child(3) { --y: -15%; --fuzz: .25dvmin; --bg: radial-gradient( circle at center, transparent 25%, #fed2 ); } .body-container.saturn::before, .body-container.saturn::after, .body-container.saturn .ring-far { position: absolute; top: 50%; left: 50%; rotate: x var(--pov); border-radius: 50%; } .body-container.saturn::before, .body-container.saturn::after { content: ""; z-index: 1; translate: -50% -50%; -webkit-clip-path: polygon( 0 100%, 100% 100%, 100% 50%, 0 50% ); clip-path: polygon( 0 100%, 100% 100%, 100% 50%, 0 50% ); } .body-container.saturn .ring-far { translate: -50% -49%; -webkit-clip-path: polygon( 0 0, 100% 0, 100% 50%, 0 50% ); clip-path: polygon( 0 0, 100% 0, 100% 50%, 0 50% ); } .body-container.saturn::before, .body-container.saturn .ring-far.a { width: var(--ring-a-size); height: var(--ring-a-size); background: radial-gradient( circle calc(var(--size) / 1.5) at center, #0000 99.9%, var(--ring-a-color) ); } .body-container.saturn::after, .body-container.saturn .ring-far.b { width: var(--ring-b-size); height: var(--ring-b-size); background: radial-gradient( circle calc(var(--size) / 1.05) at center, #0000 99.9%, var(--ring-b-color) ); } .body-container.saturn .shadow { position: absolute; z-index: 2; top: 50%; left: 50%; background: radial-gradient( ellipse calc(var(--size) / 1.4) calc(var(--size) / 1.4 * 3) at center, #0000 18%, #000 18.1% ); width: 100%; height: 75%; transform-style: preserve-3d; transform-origin: left center; rotate: x var(--pov); translate: 0 -50%; border-radius: 30%; border-top-right-radius: 50% 90%; border-bottom-right-radius: 50% 90%; -webkit-clip-path: polygon( 50% 0, 100% 0, 100% 100%, 50% 100% ); clip-path: polygon( 50% 0, 100% 0, 100% 100%, 50% 100% ); -webkit-animation: saturn-shadow var(--day) -2s linear infinite; animation: saturn-shadow var(--day) -2s linear infinite; } @-webkit-keyframes saturn-shadow { from, 40%, to { opacity: 0.8; } 50%, 90% { opacity: 0.7; } to { transform: rotateZ(-1turn); } 7.8%, 43.5% { z-index: 0; } 43.6% { z-index: 2; } } @keyframes saturn-shadow { from, 40%, to { opacity: 0.8; } 50%, 90% { opacity: 0.7; } to { transform: rotateZ(-1turn); } 7.8%, 43.5% { z-index: 0; } 43.6% { z-index: 2; } } .body-container.nebula { --size: .25dvmin; --color-1: white; --color-2: white; --astronomical-unit: calc(var(--stars-orbit-size) / 2); --orbit-progress: .85; --part-width: calc(var(--size) * 30); --part-height: calc(var(--size) * 20); --center-size: calc(var(--size) * 40); --part-bg-1: #4ad8; --part-bg-2: #b50a; --part-bg-3: #ec2a; } .body-container.nebula .body-copy { position: absolute; top: 0; left: 0; border-radius: inherit; width: 100%; height: 100%; width: var(--center-size); height: var(--center-size); translate: -50% -50%; background: inherit; background: radial-gradient( ellipse calc(var(--center-size) / 1.25) calc(var(--center-size) / 2) at center, transparent 20%, #fff3, transparent 60% ); } .body-container.nebula .body-copy::after { content: ""; position: absolute; top: 50%; left: 50%; width: calc(var(--size)); height: calc(var(--size)); -webkit-animation: nebula-stars-twinkle 3s linear infinite; animation: nebula-stars-twinkle 3s linear infinite; } @-webkit-keyframes nebula-stars-twinkle { from, 27%, 40%, 60%, 73%, to { box-shadow: -2dvmin -1.1dvmin 0 #fff2, -3.4dvmin -1dvmin 0 #fff4, -1.5dvmin -.5dvmin 0 #fff3, -1dvmin 1.3dvmin 0 #fff4, -4.2dvmin 1dvmin 0 #fff1, -1.5dvmin .5dvmin 0 #fff1, .6dvmin -.6dvmin 0 #fff2, 1.9dvmin -1.4dvmin 0 #fff3, 2.5dvmin -1dvmin 0 #fff4, 1.5dvmin .5dvmin 0 #fff5, 1.8dvmin 1.25dvmin 0 #fff2, 3dvmin .9dvmin 0 #fff3; } 33%, 66% { box-shadow: -2dvmin -1.1dvmin 0 #fff4, -3.4dvmin -1dvmin 0 #fff5, -1.5dvmin -.5dvmin 0 #fff4, -1dvmin 1.3dvmin 0 #fff2, -4.2dvmin 1dvmin 0 #fff2, -1.5dvmin .5dvmin 0 #fff4, .6dvmin -.6dvmin 0 #fff6, 1.9dvmin -1.4dvmin 0 #fff4, 2.5dvmin -1dvmin 0 #fff5, 1.5dvmin .5dvmin 0 #fff3, 1.8dvmin 1.25dvmin 0 #fff4, 3dvmin .9dvmin 0 #fff7; } } @keyframes nebula-stars-twinkle { from, 27%, 40%, 60%, 73%, to { box-shadow: -2dvmin -1.1dvmin 0 #fff2, -3.4dvmin -1dvmin 0 #fff4, -1.5dvmin -.5dvmin 0 #fff3, -1dvmin 1.3dvmin 0 #fff4, -4.2dvmin 1dvmin 0 #fff1, -1.5dvmin .5dvmin 0 #fff1, .6dvmin -.6dvmin 0 #fff2, 1.9dvmin -1.4dvmin 0 #fff3, 2.5dvmin -1dvmin 0 #fff4, 1.5dvmin .5dvmin 0 #fff5, 1.8dvmin 1.25dvmin 0 #fff2, 3dvmin .9dvmin 0 #fff3; } 33%, 66% { box-shadow: -2dvmin -1.1dvmin 0 #fff4, -3.4dvmin -1dvmin 0 #fff5, -1.5dvmin -.5dvmin 0 #fff4, -1dvmin 1.3dvmin 0 #fff2, -4.2dvmin 1dvmin 0 #fff2, -1.5dvmin .5dvmin 0 #fff4, .6dvmin -.6dvmin 0 #fff6, 1.9dvmin -1.4dvmin 0 #fff4, 2.5dvmin -1dvmin 0 #fff5, 1.5dvmin .5dvmin 0 #fff3, 1.8dvmin 1.25dvmin 0 #fff4, 3dvmin .9dvmin 0 #fff7; } } .body-container.nebula .part { position: absolute; top: 50%; left: 50%; translate: calc(-50% + var(--part-distance)) -50%; width: var(--part-width); height: var(--part-height); border-radius: 100%; filter: blur(.2dvmin); background: linear-gradient( var(--part-side), var(--part-bg-1) 15%, var(--part-bg-2), transparent ), linear-gradient( to bottom, var(--part-bg-3), transparent 20%, transparent 80%, var(--part-bg-3) ), radial-gradient( circle at center, transparent 50%, var(--part-bg-3) ); } .body-container.nebula .part.a { --part-side: to left; --part-distance: -20%; } .body-container.nebula .part.b { --part-side: to right; --part-distance: 20%; } .body-container.galaxy { --size: .5dvmin; --color-1: white; --color-2: white; --astronomical-unit: calc(var(--stars-orbit-size) / 2); --orbit-progress: .35; --evolution-speed: calc(var(--day) / 3); --arm-thickness: .6dvmin; } .body-container.galaxy .arms { position: absolute; top: 50%; left: 50%; translate: -50% -50%; -webkit-animation: galaxy-rotation 5s linear infinite; animation: galaxy-rotation 5s linear infinite; } @-webkit-keyframes galaxy-rotation { to { transform: rotate(1turn); } } @keyframes galaxy-rotation { to { transform: rotate(1turn); } } :nth-child(1 of :is(.body-container.galaxy .arm)) { --i: 0; } :nth-child(2 of :is(.body-container.galaxy .arm)) { --i: 1; } .body-container.galaxy .arm { position: absolute; top: 50%; left: 50%; translate: calc(-42% + var(--i) * -15%) calc(-42% + var(--i) * -15%); rotate: calc(var(--i) * 180deg); } .body-container.galaxy .arm-depth { width: calc(var(--size) * 15); height: calc(var(--size) * 15); position: relative; transform: rotate(.4turn); -webkit-animation: galaxy-evolution var(--evolution-speed) ease-in-out infinite; animation: galaxy-evolution var(--evolution-speed) ease-in-out infinite; } @-webkit-keyframes galaxy-evolution { 50% { transform: rotate(.6turn); } } @keyframes galaxy-evolution { 50% { transform: rotate(.6turn); } } .body-container.galaxy .arm-depth::before { --arm-color: hsl( calc(245 + var(--d) * 20), 30%, calc(60% + var(--d) * 5%) ); content: ""; position: absolute; inset: 0; border-top: var(--arm-thickness) solid var(--arm-color); border-right: var(--arm-thickness) solid var(--arm-color); border-radius: 100%; filter: blur(.2dvmin); } .body-container.galaxy .arm-depth::after { content: ""; position: absolute; width: calc(var(--size) / 3); height: calc(var(--size) / 3); top: 50%; left: 50%; translate: -50% -50%; border-radius: 50%; box-shadow: .8dvmin 0 2dvmin 0 brown, -.8dvmin 0 2dvmin 0 brown, 0 1.6dvmin 1dvmin 0 orange, 0 -1.6dvmin 1dvmin 0 orange, 2.4dvmin 0 .15dvmin 0 white, -2.4dvmin 0 .15dvmin 0 #fe9, 0 3.2dvmin .15dvmin 0 white, 0 -3.2dvmin .15dvmin 0 #aaf; -webkit-animation: galaxy-stars-dim var(--evolution-speed) ease-in-out infinite; animation: galaxy-stars-dim var(--evolution-speed) ease-in-out infinite; } @-webkit-keyframes galaxy-stars-dim { 15%, 35%, 65%, 85% { opacity: .6; } 25%, 75% { opacity: 0; } } @keyframes galaxy-stars-dim { 15%, 35%, 65%, 85% { opacity: .6; } 25%, 75% { opacity: 0; } } .body-container.galaxy .arm-depth .arm-depth { position: absolute; width: 61.8%; height: 61.8%; bottom: 6%; right: 5%; }
JS
Copy