Fix: iOS Bottom-Nav — #app position:fixed+inset:0, Nav als Flex-Kind
position:fixed auf #bottom-nav funktioniert in iOS PWA-Standalone-Mode nicht zuverlässig (driftet beim Scrollen). Fix: #app selbst position:fixed;inset:0 → Nav ist normales Flex-Kind am unteren Rand → kein iOS-Fixed-Bug möglich. Desktop: #app position:static via Media Query. SW by-v529, APP_VER 506
This commit is contained in:
parent
1056824be3
commit
cd5688ae8f
3 changed files with 25 additions and 34 deletions
|
|
@ -7,51 +7,48 @@
|
|||
/* ------------------------------------------------------------
|
||||
1. APP SHELL
|
||||
------------------------------------------------------------ */
|
||||
/* Mobile: #app als fixed Container — einzig zuverlässiger iOS-PWA-Fix.
|
||||
#bottom-nav braucht dann kein position:fixed mehr, er ist Flex-Kind
|
||||
am unteren Rand des fixierten Containers. */
|
||||
#app {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100dvh;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Content-Bereich: window scrollt — kein overflow-y hier.
|
||||
position:fixed auf #bottom-nav funktioniert auf iOS nur zuverlässig
|
||||
wenn der window-scroll aktiv ist, nicht ein innerer Scroll-Container. */
|
||||
/* Content-Bereich scrollt intern */
|
||||
#page-content {
|
||||
flex: 1;
|
||||
overflow: visible;
|
||||
padding-bottom: calc(var(--nav-bottom-height) + var(--safe-bottom) + 16px);
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
padding-bottom: var(--space-4);
|
||||
}
|
||||
|
||||
/* Vollbild-Seiten (Karte, Routen, Chat, Gassi, Sitting):
|
||||
window-scroll deaktivieren, intern scrollen */
|
||||
body.page-fullscreen {
|
||||
overflow: hidden;
|
||||
height: 100dvh;
|
||||
}
|
||||
body.page-fullscreen #app {
|
||||
height: 100dvh;
|
||||
overflow: hidden;
|
||||
}
|
||||
/* Vollbild-Seiten: #page-content kein Scroll */
|
||||
body.page-fullscreen #page-content {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
overflow: hidden;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
/* Desktop: Sidebar-Layout — kein Bottom-Nav */
|
||||
/* Desktop: normaler Dokumentfluss, Sidebar-Layout */
|
||||
@media (min-width: 768px) {
|
||||
#app {
|
||||
position: static;
|
||||
min-height: 100dvh;
|
||||
overflow: visible;
|
||||
flex-direction: row;
|
||||
}
|
||||
#page-content {
|
||||
min-height: unset;
|
||||
overflow-y: visible;
|
||||
padding-bottom: 0;
|
||||
padding-left: var(--nav-sidebar-width);
|
||||
}
|
||||
body.page-fullscreen,
|
||||
body.page-fullscreen #app,
|
||||
body.page-fullscreen #page-content {
|
||||
height: auto;
|
||||
overflow: visible;
|
||||
}
|
||||
}
|
||||
|
|
@ -180,15 +177,9 @@ body.page-fullscreen #page-content {
|
|||
3. BOTTOM NAVIGATION (Mobile)
|
||||
------------------------------------------------------------ */
|
||||
#bottom-nav {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 700; /* über Leaflet-Panes (~400) */
|
||||
/* GPU-Layer erzwingen → iOS Safari fixed-position Stabilität */
|
||||
transform: translateZ(0);
|
||||
-webkit-transform: translateZ(0);
|
||||
will-change: transform;
|
||||
/* Flex-Kind statt position:fixed — kein iOS-Drift mehr */
|
||||
flex-shrink: 0;
|
||||
z-index: 700;
|
||||
min-height: calc(var(--nav-bottom-height) + var(--safe-bottom));
|
||||
padding-top: var(--space-1);
|
||||
padding-bottom: calc(var(--safe-bottom) + var(--space-1));
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
Router, State-Management, Navigation, Initialisierung.
|
||||
============================================================ */
|
||||
|
||||
const APP_VER = '505'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
const APP_VER = '506'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||
const APP_VERSION = '1.0.0'; // ← semantische Version, wird bei make release gesetzt
|
||||
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
Offline-Cache + Push Notifications + Tile-Cache
|
||||
============================================================ */
|
||||
|
||||
const CACHE_VERSION = 'by-v528';
|
||||
const CACHE_VERSION = 'by-v529';
|
||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue