From 27b27d9f5d2437207178a6798a3b5291593306f3 Mon Sep 17 00:00:00 2001 From: Light1YT Date: Tue, 30 Jun 2026 16:02:40 +0500 Subject: [PATCH] =?UTF-8?q?fix(report):=20sticky-=D1=81=D0=B0=D0=B9=D0=B4?= =?UTF-8?q?=D0=B1=D0=B0=D1=80=20=E2=80=94=20overflow-x:=20clip=20=D0=B2?= =?UTF-8?q?=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20hidden=20(#958)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit «Навигация не едет за скролом» + не видно подсветки активной секции: панель (position: sticky; top: 72) уезжала вверх при скролле (на scrollY 6769 её top был −6589). Корень: html, body { overflow-x: hidden } (#66 — гасит гориз.скролл) заставляет браузер вычислить overflow-y: auto → body становится scroll- контейнером для sticky, но реально скроллит window/html, а не body → sticky никогда не залипает. Подсветка scrollspy не видна по той же причине — уезжает с панелью. overflow-x: CLIP так же режет горизонтальный overflow, но НЕ создаёт scroll- контейнер (overflow-y остаётся visible) → sticky работает. Подтверждено на проде: с clip body overflow-y=visible, aside залипает на top:72 при скролле. Чинит sticky-сайдбары на всех страницах с этим паттерном (был сломан исходно). --- frontend/src/app/globals.css | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css index a4ab1b3f..205b08a7 100644 --- a/frontend/src/app/globals.css +++ b/frontend/src/app/globals.css @@ -97,11 +97,16 @@ a { * подключаются через className; инлайн-стили остаются desktop-видом по умолчанию. */ -/* Никакого горизонтального скролла на узких экранах (acceptance #66). */ +/* Никакого горизонтального скролла на узких экранах (acceptance #66). + * overflow-x: CLIP, не hidden: `hidden` заставляет браузер вычислить + * overflow-y: auto → body/html становятся scroll-контейнером и ЛОМАЮТ + * `position: sticky` у сайдбара отчёта (панель уезжала вверх вместо залипания). + * `clip` так же режет горизонтальный overflow, но НЕ создаёт scroll-контейнер + * и оставляет overflow-y: visible → sticky-сайдбар работает. */ html, body { max-width: 100%; - overflow-x: hidden; + overflow-x: clip; } /* Sidebar-grid (напр. "240px 1fr" / "minmax(300px,360px) 1fr"): на планшете -- 2.45.3