fix(ecommerce): overflow horizontal en mobile hacía ver todo "a tamaño real"
Root cause real del bug reportado por el usuario (imagen de producto viéndose gigante/cortada en Chrome y Edge Android) -- no era la imagen: al mover "También te puede gustar" DENTRO del grid de la página (para el layout de 2 filas del commit anterior), su carrusel horizontal (overflow-x-auto interno, sin flex-wrap) empezó a contar como item de ese grid. Sin min-w-0, el ancho mínimo intrínseco de TODAS las cards del carrusel sin wrappear se usa para dimensionar la columna compartida del grid -- en mobile (grid de una sola columna), eso empujaba TODO (imagen, título, specs) a ~800px de ancho en un viewport real de ~380px. El navegador termina "zoomeando" el layout para que entre, dando la sensación de que todo se ve a tamaño real / cortado. Confirmado en vivo con bisección real: sin el fix, el grid medía 783px en un viewport de 380px; agregando min-w-0 al contenedor del carrusel vuelve a 380px. Se agrega min-w-0 también a los otros 3 contenedores del grid (galería, info, buy-box) y a la tira de miniaturas dentro de ProductGallery (mismo patrón de overflow-x-auto) como defensa preventiva -- práctica estándar para items de grid/flex con scroll horizontal interno. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_012Y4df3Z7odr9Cg8F2nw6uV
This commit is contained in:
1 parent
f92e8e6b36
commit
1c9693e573
2 files changed
+19
-4
No files matched your search
@@ -109,7 +109,14 @@ export function ProductGallery({ images, name }: { images: string[]; name: strin
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="grid gap-4 lg:grid-cols-[86px_1fr]">
|
||||
<div className="min-w-0 grid gap-4 lg:grid-cols-[86px_1fr]">
|
||||
{/* min-w-0: esta tira de miniaturas es un overflow-x-auto (scroll
|
||||
horizontal) igual que el carrusel de "También te puede gustar"
|
||||
en app/product/[slug]/page.tsx -- mismo bug si este componente
|
||||
termina como item de un grid externo sin min-w-0: para productos
|
||||
con muchas fotos, el ancho minimo intrinseco de TODAS las
|
||||
miniaturas sin wrappear puede forzar overflow horizontal en toda
|
||||
la pagina en mobile. */}
|
||||
<div className="order-2 flex gap-3 overflow-x-auto lg:order-1 lg:flex-col">
|
||||
{images.map((image) => <button type="button" key={image} onClick={() => { setSelected(image); reset(); }} onMouseEnter={() => { setSelected(image); reset(); }} className={`relative aspect-square w-20 shrink-0 overflow-hidden rounded-2xl border-2 ${selected === image ? "border-fuchsia-500" : "border-transparent"}`}><Image src={image} alt="" fill sizes="80px" className="object-cover" /></button>)}
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user