WEBLEB
होम
संपादक
लॉग इन करें
Pro
हिंदी
English
Français
Español
Português
Deutsch
Italiano
हिंदी
कैस्केडिंग सौर मंडल
1912
Andev.web
संपादक में खोलें
अपना कोड प्रकाशित करें
अनुशंसित
26 August 2024
सौर अन्वेषक
12 April 2025
सौर ऊर्जा प्रणालियाँ
2 April 2025
सौर परिवार
HTML
Copy
Andev Web
C
ascading
S
olar
S
ystem
Sun
Mercury
Venus
Earth
Mars
Jupiter
Saturn
Uranus
Neptune
Pluto
CSS
Copy
* { box-sizing: border-box; margin: 0; } .solar-system { --sun-diameter: 12dvh; --sun-spacing: .15; /* very much not to scale */ --mercury-size: .2; --venus-size: .25; --earth-size: .25; --mars-size: .25; --jupiter-size: .75; --saturn-size: .6; --uranus-size: .4; --neptune-size: .4; --pluto-size: .1; /* to scale! https://en.wikipedia.org/wiki/Orbital_period#Examples_of_sidereal_and_synodic_periods */ --mercury-period: .24; --venus-period: .615; --earth-duration: 5s; --mars-period: 1.88; --jupiter-period: 11.86; --saturn-period: 29.46; --uranus-period: 84; --neptune-period: 164; --pluto-period: 248; padding: 1rem 0 0 0; overflow: hidden; display: grid; gap: calc(var(--sun-diameter) * .15); grid-template-rows: repeat(10, auto); grid-template-areas: "pluto" "neptune" "uranus" "saturn" "jupiter" "mars" "earth" "venus" "mercury" "sun"; .orbit { --sun-margin: calc(var(--sun-diameter) * var(--sun-spacing)); --planet-diameter: max(var(--planet-size) * var(--sun-diameter), 1rem); grid-column: 1 / -1; display: grid; grid-template-rows: subgrid; grid-template-columns: subgrid; justify-items: center; &:has(.sun) { --planet-size: 1; grid-area: sun; padding-block: var(--sun-margin); .label { color: transparent; } } &:has(.mercury) { --planet-size: var(--mercury-size); --planet-duration: calc(var(--earth-duration) * var(--mercury-period)); grid-row: mercury-start / sun-end; .planet, .label { grid-area: mercury; } } &:has(.venus) { --planet-size: var(--venus-size); --planet-duration: calc(var(--earth-duration) * var(--venus-period)); grid-row: venus-start / sun-end; .planet, .label { grid-area: venus; } } &:has(.earth) { --planet-size: var(--earth-size); --planet-duration: var(--earth-duration); grid-row: earth-start / sun-end; .planet, .label { grid-area: earth; } } &:has(.mars) { --planet-size: var(--mars-size); --planet-duration: calc(var(--earth-duration) * var(--mars-period)); grid-row: mars-start / sun-end; .planet, .label { grid-area: mars; } } &:has(.jupiter) { --planet-size: var(--jupiter-size); --planet-duration: calc(var(--earth-duration) * var(--jupiter-period)); grid-row: jupiter-start / sun-end; .planet, .label { grid-area: jupiter; } } &:has(.saturn) { --planet-size: var(--saturn-size); --planet-duration: calc(var(--earth-duration) * var(--saturn-period)); grid-row: saturn-start / sun-end; .planet, .label { grid-area: saturn; } } &:has(.uranus) { --planet-size: var(--uranus-size); --planet-duration: calc(var(--earth-duration) * var(--uranus-period)); grid-row: uranus-start / sun-end; .planet, .label { grid-area: uranus; } } &:has(.neptune) { --planet-size: var(--neptune-size); --planet-duration: calc(var(--earth-duration) * var(--neptune-period)); grid-row: neptune-start / sun-end; .planet, .label { grid-area: neptune; } } &:has(.pluto) { --planet-size: var(--pluto-size); --planet-duration: calc(var(--earth-duration) * var(--pluto-period)); grid-row: pluto-start / sun-end; .planet, .label { grid-area: pluto; } } } .planet { height: var(--planet-diameter); aspect-ratio: 1; border-radius: 50%; /* background-color: rgb(255 0 0 / .9); */ z-index: 1; background-image: radial-gradient(circle at center 80%, rgb(255 255 255 / .4), rgb(255 255 255 / 0) 50%); &.sun { --sun-color: #ffd800; background-color: var(--sun-color); background-image: none; box-shadow: 0 0 42px 0 color-mix(in oklch, transparent, var(--sun-color) 50%); } &.mercury { background-color: #989494; } &.venus { background-color: #e1d59d; } &.earth { background-color: #008bb3; } &.mars { background-color: #dfa272; } &.jupiter { background-color: #af7045; } &.saturn { background-color: #d3b57c; } &.uranus { background-color: #77aac4; } &.neptune { background-color: #3a80a4; } &.pluto { background-color: #989494; } } .orbit-ring { grid-area: 1 / 1 / -1 / -1; height: calc(2 * (100% - var(--planet-diameter) / 2 - var(--sun-diameter) / 2 - var(--sun-margin))); aspect-ratio: 1; translate: 0 calc(var(--planet-diameter) / 2); border-radius: 50%; border: 1px solid rgb(255 255 255 / .5); z-index: 0; } .axis { grid-area: 1 / 1 / -1 / -1; display: grid; grid-template-rows: subgrid; transform-origin: center calc(100% - var(--sun-diameter) / 2 - var(--sun-margin)); animation: orbit var(--planet-duration) linear infinite; } .label { align-self: center; translate: 0 -.5lh; z-index: 2; } } @keyframes orbit { from { rotate: 0turn; } to { rotate: 1turn; } } body { font-family: system-ui, sans-serif; color: white; background: linear-gradient(to bottom, #112, #223); } a { color: currentcolor; } h1 { font-weight: 400; } .layout { min-height: 100dvh; display: grid; & > .solar-system { align-self: end; } } .content { max-inline-size: 40rem; margin: 8px; & > * + * { margin-block-start: 1em; } }
JS
Copy
const fixIt = () => { solarSystem.style.display = "none"; requestAnimationFrame(() => { solarSystem.style.display = ""; }); } const ro = new ResizeObserver(entries => { const sunHeight = solarSystem.querySelector(".sun").getBoundingClientRect().height; const solarSystemHeight = solarSystem.getBoundingClientRect().height; if(solarSystemHeight > 10 * sunHeight) { fixIt(); } });