Fix mobile view for weather effects

- Replace % units with dvh/vw for dynamic viewport sizing
- Fix stars, fireflies, dust motes, and light orbs positioning
- Fix moon and moon glow positioning to use dvh/vw
- Update snowfall and rainfall animations to use 100dvh
- Ensures proper distribution across full mobile viewport
This commit is contained in:
tomt610
2026-01-12 22:54:46 +00:00
parent 3797e21912
commit 6e9ff9812d
2 changed files with 17 additions and 17 deletions
+10 -10
View File
@@ -247,8 +247,8 @@ function createSunshine() {
for (let i = 0; i < 25; i++) { for (let i = 0; i < 25; i++) {
const particle = document.createElement('div'); const particle = document.createElement('div');
particle.className = 'rpg-weather-particle rpg-clear-dust-mote'; particle.className = 'rpg-weather-particle rpg-clear-dust-mote';
particle.style.left = `${Math.random() * 100}%`; particle.style.left = `${Math.random() * 100}vw`;
particle.style.top = `${Math.random() * 100}%`; particle.style.top = `${Math.random() * 100}dvh`;
particle.style.animationDelay = `${Math.random() * 15}s`; particle.style.animationDelay = `${Math.random() * 15}s`;
particle.style.animationDuration = `${12 + Math.random() * 8}s`; particle.style.animationDuration = `${12 + Math.random() * 8}s`;
// Vary the size slightly // Vary the size slightly
@@ -262,8 +262,8 @@ function createSunshine() {
for (let i = 0; i < 6; i++) { for (let i = 0; i < 6; i++) {
const orb = document.createElement('div'); const orb = document.createElement('div');
orb.className = 'rpg-weather-particle rpg-clear-light-orb'; orb.className = 'rpg-weather-particle rpg-clear-light-orb';
orb.style.left = `${10 + Math.random() * 80}%`; orb.style.left = `${10 + Math.random() * 80}vw`;
orb.style.top = `${10 + Math.random() * 80}%`; orb.style.top = `${10 + Math.random() * 80}dvh`;
orb.style.animationDelay = `${i * 2}s`; orb.style.animationDelay = `${i * 2}s`;
orb.style.animationDuration = `${20 + Math.random() * 10}s`; orb.style.animationDuration = `${20 + Math.random() * 10}s`;
// Vary the size // Vary the size
@@ -307,8 +307,8 @@ function createNighttime() {
for (let i = 0; i < 60; i++) { for (let i = 0; i < 60; i++) {
const star = document.createElement('div'); const star = document.createElement('div');
star.className = 'rpg-weather-particle rpg-night-star'; star.className = 'rpg-weather-particle rpg-night-star';
star.style.left = `${Math.random() * 100}%`; star.style.left = `${Math.random() * 100}vw`;
star.style.top = `${Math.random() * 60}%`; // Stars mostly in upper portion star.style.top = `${Math.random() * 60}dvh`; // Stars mostly in upper portion
star.style.animationDelay = `${Math.random() * 5}s`; star.style.animationDelay = `${Math.random() * 5}s`;
star.style.animationDuration = `${2 + Math.random() * 3}s`; star.style.animationDuration = `${2 + Math.random() * 3}s`;
// Vary the size // Vary the size
@@ -322,8 +322,8 @@ function createNighttime() {
for (let i = 0; i < 8; i++) { for (let i = 0; i < 8; i++) {
const brightStar = document.createElement('div'); const brightStar = document.createElement('div');
brightStar.className = 'rpg-weather-particle rpg-night-star rpg-night-star-bright'; brightStar.className = 'rpg-weather-particle rpg-night-star rpg-night-star-bright';
brightStar.style.left = `${Math.random() * 100}%`; brightStar.style.left = `${Math.random() * 100}vw`;
brightStar.style.top = `${Math.random() * 50}%`; brightStar.style.top = `${Math.random() * 50}dvh`;
brightStar.style.animationDelay = `${Math.random() * 4}s`; brightStar.style.animationDelay = `${Math.random() * 4}s`;
brightStar.style.animationDuration = `${3 + Math.random() * 2}s`; brightStar.style.animationDuration = `${3 + Math.random() * 2}s`;
container.appendChild(brightStar); container.appendChild(brightStar);
@@ -333,8 +333,8 @@ function createNighttime() {
for (let i = 0; i < 15; i++) { for (let i = 0; i < 15; i++) {
const firefly = document.createElement('div'); const firefly = document.createElement('div');
firefly.className = 'rpg-weather-particle rpg-night-firefly'; firefly.className = 'rpg-weather-particle rpg-night-firefly';
firefly.style.left = `${Math.random() * 100}%`; firefly.style.left = `${Math.random() * 100}vw`;
firefly.style.top = `${40 + Math.random() * 55}%`; // Fireflies in lower portion firefly.style.top = `${40 + Math.random() * 55}dvh`; // Fireflies in lower portion
firefly.style.animationDelay = `${Math.random() * 10}s`; firefly.style.animationDelay = `${Math.random() * 10}s`;
firefly.style.animationDuration = `${8 + Math.random() * 7}s`; firefly.style.animationDuration = `${8 + Math.random() * 7}s`;
container.appendChild(firefly); container.appendChild(firefly);
+7 -7
View File
@@ -9524,11 +9524,11 @@ body[data-theme="cyberpunk"] .rpg-music-widget-play {
/* Snowfall animation */ /* Snowfall animation */
@keyframes rpg-snowfall { @keyframes rpg-snowfall {
0% { 0% {
transform: translateY(0vh) rotate(0deg); transform: translateY(0) rotate(0deg);
opacity: 0.8; opacity: 0.8;
} }
100% { 100% {
transform: translateY(100vh) rotate(360deg); transform: translateY(100dvh) rotate(360deg);
opacity: 0.2; opacity: 0.2;
} }
} }
@@ -9598,7 +9598,7 @@ body[data-theme="cyberpunk"] .rpg-music-widget-play {
opacity: 0.8; opacity: 0.8;
} }
100% { 100% {
transform: translateY(100vh); transform: translateY(100dvh);
opacity: 0.3; opacity: 0.3;
} }
} }
@@ -9849,8 +9849,8 @@ body[data-theme="cyberpunk"] .rpg-music-widget-play {
/* Moon */ /* Moon */
.rpg-night-moon { .rpg-night-moon {
position: fixed; position: fixed;
top: 8%; top: 8dvh;
left: 12%; left: 12vw;
width: 60px; width: 60px;
height: 60px; height: 60px;
background: radial-gradient(circle at 35% 35%, background: radial-gradient(circle at 35% 35%,
@@ -9880,8 +9880,8 @@ body[data-theme="cyberpunk"] .rpg-music-widget-play {
/* Moon glow aura */ /* Moon glow aura */
.rpg-night-moon-glow { .rpg-night-moon-glow {
position: fixed; position: fixed;
top: 5%; top: 5dvh;
left: 9%; left: 9vw;
width: 120px; width: 120px;
height: 120px; height: 120px;
background: radial-gradient(circle at center, background: radial-gradient(circle at center,