fix(pwa): respect iOS safe-area-inset on body + sticky/fixed headers
В iOS PWA при viewport-fit=cover и apple-mobile-web-app-status-bar-style= black-translucent статус-бар прозрачно накладывается на шапки страниц (пользователи жаловались скринами с overlap «11:37» поверх «Ремонт #12»). Body теперь имеет padding-top/bottom env(safe-area-inset-*) — fix initial- рендер и нижних кнопок. Для sticky/fixed .top-0 хедеров отдельно overrid'им top: env(safe-area-inset-top), т.к. sticky прилипает к top:0 viewport, а не к содержимому body. Селектор узкий (.sticky.top-0 / .fixed.top-0) — не задевает .fixed.inset-0 полноэкранные модалки.
This commit is contained in:
@@ -31,5 +31,20 @@
|
|||||||
* { @apply border-border; }
|
* { @apply border-border; }
|
||||||
body {
|
body {
|
||||||
@apply bg-background text-foreground font-sans;
|
@apply bg-background text-foreground font-sans;
|
||||||
|
/* iOS PWA: status bar (status-bar-style=black-translucent) и home-indicator
|
||||||
|
перекрывают контент при viewport-fit=cover. Сдвигаем body content вниз
|
||||||
|
на высоту safe-area, чтобы шапки/кнопки не уезжали под системные зоны. */
|
||||||
|
padding-top: env(safe-area-inset-top);
|
||||||
|
padding-bottom: env(safe-area-inset-bottom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@layer utilities {
|
||||||
|
/* iOS PWA: position:sticky + top:0 прилипает к самому верху viewport,
|
||||||
|
т.е. под статус-бар (containing-block тут не помогает). Переопределяем
|
||||||
|
top у всех Tailwind .top-0, чтобы шапки залипали ниже notch. */
|
||||||
|
.sticky.top-0,
|
||||||
|
.fixed.top-0 {
|
||||||
|
top: env(safe-area-inset-top);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user