липкая панель прячется, пока герой в кадре #3296
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3296
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/mera-sticky-after-hero"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Владелец увидел на первом экране, что полоса «Проверить квартиру» лежит поверх абзаца «Мы называем реальную цену вашей квартиры».
Почему отступом не лечится
.barSpacerдобавляет высоту в конец документа, а.barRoot—fixed: он накрывает нижние ~67px вьюпорта при любой прокрутке, включаяscrollTop = 0. Разобравший это агент так и написал в отчёте и не стал чинить молча — правильно, потому что напрашивающееся решение здесь не работает.Правка
Пока герой виден, панель не нужна: прямо в нём стоит та же форма проверки, и полоса дублирует призыв, закрывая текст. Уходит герой — панель появляется.
Решение, которое стоит назвать отдельно
По умолчанию панель видима. Скрытие включает только клиентский наблюдатель; если скрипт не выполнился — ошибка, старый браузер, отключённый JS — поведение остаётся ровно сегодняшним.
Обратный порядок (по умолчанию скрыта, показывает скрипт) в тех же условиях убрал бы призыв со страницы совсем, то есть чинил бы вид ценой работы. Нет секции героя — наблюдать нечего, панель просто остаётся видимой, а не пропадает.
Мелочи, которые не мелочи
display: none: transform идёт на композиторе и не вызывает перекладку. Страница и так дорога в отрисовке на мобильном (1824 мс в Style & Layout), и лечение перекрытия не должно стоить пересчёта макета на каждом пересечении границы героя.aria-hidden+inert): иначе Tab уводит в кнопку, которой на экране нет.rootMargin: -68pxснизу — иначе панель успевала бы мигнуть на хвосте героя.prefers-reduced-motionснимает переход.Проверки
Тест проверяет поведение, а не наличие класса в файле: наблюдателю скармливается пересечение, и проверяется, что панель убралась и вернулась.
Фальсификация обеих сторон:
expected false to be true;до срабатывания панель видима: expected true to be false— этот ассерт сторожит именно решение о прогрессивном улучшении.Забавная деталь, которая заодно доказала, что
aria-hiddenработает: первая версия теста искала кнопку черезgetByRole("link")и падала — убранная панель из дерева доступности пропадает. Локатор переписан на поиск по контейнеру.150 passed ·
tscrc=0 ·eslint --max-warnings 0rc=0.