Fix: Bottom-Nav immer fixiert + Gründer-Seite null-Error

- body: height:100% + overflow:hidden — body scrollt nie mehr selbst
- #app: height:100dvh (war min-height) + overflow:hidden — exakte Viewport-Höhe
- Desktop (768px+): #app height:auto + min-height:100dvh zurück (kein Bottom-Nav)
- #page-content: -webkit-overflow-scrolling:touch für iOS-Momentum-Scroll
- gruender.js: null-Check vor _renderStats() gegen "null is not an object"-Crash
- SW by-v522, APP_VER 499
This commit is contained in:
rene 2026-04-29 22:01:33 +02:00
parent d1e4867fb4
commit b27e4b006f
5 changed files with 14 additions and 6 deletions

View file

@ -206,7 +206,8 @@ body {
line-height: var(--leading-normal); line-height: var(--leading-normal);
color: var(--c-text); color: var(--c-text);
background-color: var(--c-bg); background-color: var(--c-bg);
min-height: 100%; height: 100%;
overflow: hidden; /* body nie scrollen — nur #page-content */
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }

View file

@ -10,7 +10,8 @@
#app { #app {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-height: 100dvh; /* dvh: berücksichtigt mobile Browser-Chrome */ height: 100dvh; /* exakte Viewport-Höhe: body scrollt nie, nur #page-content */
overflow: hidden;
} }
/* Content-Bereich: füllt den Raum zwischen Header und Bottom-Nav */ /* Content-Bereich: füllt den Raum zwischen Header und Bottom-Nav */
@ -19,12 +20,17 @@
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
padding-bottom: calc(var(--nav-bottom-height) + var(--safe-bottom) + 16px); padding-bottom: calc(var(--nav-bottom-height) + var(--safe-bottom) + 16px);
/* -webkit-overflow-scrolling für iOS-Momentum-Scroll */
-webkit-overflow-scrolling: touch;
} }
/* Desktop: Sidebar-Layout */ /* Desktop: Sidebar-Layout — kein Bottom-Nav, natürliche Höhe */
@media (min-width: 768px) { @media (min-width: 768px) {
#app { #app {
flex-direction: row; flex-direction: row;
height: auto;
min-height: 100dvh;
overflow: visible;
} }
#page-content { #page-content {
padding-bottom: 0; padding-bottom: 0;

View file

@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung. Router, State-Management, Navigation, Initialisierung.
============================================================ */ ============================================================ */
const APP_VER = '498'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VER = '499'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.0.0'; // ← semantische Version, wird bei make release gesetzt const APP_VERSION = '1.0.0'; // ← semantische Version, wird bei make release gesetzt
const IS_STAGING = location.hostname === 'staging.banyaro.app'; const IS_STAGING = location.hostname === 'staging.banyaro.app';

View file

@ -40,9 +40,10 @@ window.Page_gruender = (() => {
const el = _container.querySelector('#grnd-content'); const el = _container.querySelector('#grnd-content');
try { try {
const d = await API.get('/api/partner/founders/stats'); const d = await API.get('/api/partner/founders/stats');
if (!d || typeof d.total === 'undefined') throw new Error('Ungültige Antwort vom Server.');
el.innerHTML = _renderStats(d); el.innerHTML = _renderStats(d);
} catch (e) { } catch (e) {
el.innerHTML = `<p style="color:var(--c-text-muted);text-align:center">${e.message}</p>`; el.innerHTML = `<p style="color:var(--c-text-muted);text-align:center">${e.message || 'Fehler beim Laden.'}</p>`;
} }
} }

View file

@ -3,7 +3,7 @@
Offline-Cache + Push Notifications + Tile-Cache Offline-Cache + Push Notifications + Tile-Cache
============================================================ */ ============================================================ */
const CACHE_VERSION = 'by-v521'; const CACHE_VERSION = 'by-v522';
const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_STATIC = `${CACHE_VERSION}-static`;
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache