Fix: Nav als Flex-Kind in #app{height:100dvh} — kein position:fixed, Desktop-Scroll repariert, SW by-v534

This commit is contained in:
rene 2026-04-30 08:52:39 +02:00
parent 03508f8aa3
commit 9506eea0d9
4 changed files with 49 additions and 54 deletions

View file

@ -14,34 +14,34 @@
overflow: hidden;
}
/* Content-Bereich scrollt intern */
/* Content-Bereich scrollt intern — kein padding-bottom nötig da Nav Flex-Kind */
#page-content {
flex: 1;
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
flex: 1;
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
overscroll-behavior-y: none; /* verhindert iOS-Bounce → fixed Nav bleibt stabil */
padding-bottom: calc(var(--nav-bottom-height) + var(--safe-bottom) + 16px);
overscroll-behavior-y: none;
}
/* Vollbild-Seiten: #page-content kein Scroll */
body.page-fullscreen #page-content {
overflow: hidden;
padding-bottom: 0;
overflow: hidden;
}
/* Desktop: normaler Dokumentfluss, Sidebar-Layout */
/* Desktop: window-scroll, Sidebar-Layout */
@media (min-width: 768px) {
#app {
height: auto;
min-height: 100dvh;
overflow: visible;
height: auto;
min-height: 100dvh;
overflow: visible;
flex-direction: row;
}
#page-content {
flex: unset;
min-height: unset;
overflow-y: visible;
overflow-x: visible;
padding-bottom: 0;
padding-left: var(--nav-sidebar-width);
}
@ -174,23 +174,19 @@ body.page-fullscreen #page-content {
3. BOTTOM NAVIGATION (Mobile)
------------------------------------------------------------ */
#bottom-nav {
/* position:fixed relativ zum Viewport da #app kein transform hat,
ist dies stabil. Scroll passiert in #page-content (overflow-y:auto),
nicht im window kein iOS-Drift. */
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 700;
min-height: calc(var(--nav-bottom-height) + var(--safe-bottom));
/* Flex-Kind von #app{height:100dvh} kein position:fixed nötig.
100dvh auf iOS inkludiert Safe Areas Nav endet am physischen Rand. */
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));
background: var(--c-surface);
border-top: 1px solid var(--c-border-light);
display: flex;
align-items: stretch;
box-shadow: 0 -2px 12px rgba(42, 31, 20, 0.08);
transition: border-top-color 0.4s ease;
background: var(--c-surface);
border-top: 1px solid var(--c-border-light);
display: flex;
align-items: stretch;
box-shadow: 0 -2px 12px rgba(42, 31, 20, 0.08);
transition: border-top-color 0.4s ease;
}
@keyframes nav-alert-pulse {