store: sticky buy bar makes two footer links untappable on mobile PDP #89
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Found while reviewing #87 (spacing audit). Pre-existing on
main, reproduces identically in the approved mockupdesign/produk-shockbreaker-avanza.html, so it is not a regression and was deliberately left out of #87's scope.Symptom
On the mobile product detail page at max scroll, two footer links cannot be tapped. The sticky buy bar covers them.
Measured at 375x812 on the built static export:
.sticky-buyheightposition: fixed; inset: auto 0 0 0bodypadding-bottom.pdppadding-bottomFour footer runs fall under the bar, and
document.elementFromPointat each link's own centre returns the bar instead of the link:Oli & filter/products?kategori=oliKaki-kaki/products?kategori=kaki-kakiSPAN.price(the bar)Jam buka & lokasi/contactCara pesan/contact#cara-pesanBUTTON.btn(the bar)So
Kaki-kakiandCara pesanare unreachable by tap on this route at this width. Roughly 21px of footer content is permanently obscured.Why the existing padding does not cover it
.pdp { padding-bottom: 96px }inside themax-width: 700pxquery looks like clearance for the bar, and that was my own reading in #87 before measuring. It is wrong twice:position: fixed, so it overlays the bottom of the viewport, not the end of.pdp. At max scroll.pdpis already off-screen — its bottom edge sits at viewport y -11 — so the reserve protects a box that is nowhere near the bar. What is actually under the bar at that scroll position is the footer, which reserves nothing.Suggested fix
Reserve on the element that is actually overlaid. Since the bar is viewport-fixed, the scroll container is what needs the room:
body { padding-bottom: 69px }(or the bar's measured height) inside the samemax-width: 700pxquery, on the routes where the bar is displayed; and.pdp's 96px to whatever the layout wants for its own rhythm, independent of the bar.Worth deriving the value from the bar rather than hardcoding a second magic number — the 96px/69px mismatch is exactly the drift that happens when two places encode the same physical measurement.
Scope note
.pdp { padding-bottom: 96px }is generated intoapp/globals.cssbyscripts/port-design.mjsfromdesign/assets/tokens.css, and the mockup has the same defect. So fixing it properly means correcting the design source and re-vendoring, the same route #87 took for the layanan spacing — not hand-editingglobals.css, which the port would overwrite.Verification for whoever takes it
Build the static export, serve it, then at 375x812 on
/products/<slug>scroll todocument.documentElement.scrollHeightand assertdocument.elementFromPoint(cx, cy)returns the anchor itself for everyfooter a. That check fails today and should pass after.