🧩 问题描述 / Problem
在使用 flex flex-col 布局时,我遇到了一个明显的 layout shift(布局跳动)问题:
当页面加载 <Image /> 组件时,初始时容器高度较小,但图片加载完成后高度被撑大,导致整体布局被“顶开”,体验很不流畅。
❗️This is a common issue when using <Image /> inside a flex flex-col container — the image loads slowly and pushes surrounding content downward, causing layout shift.
🎯 目标 / Goals
🔍 原因分析 / Why This Happens
✅ 解决方案 / Solution
关键做法:使用一个 div 包裹 <Image />,设置固定比例,提前占位空间。
<div className="relative w-full aspect-[1/1] overflow-hidden">
<Image
src={item.image}
alt={item.name}
fill
className="object-contain self-center"
priority
/>
</div>
-
relative: 给父容器定位,配合 Image fill 使用
-
aspect-[1/1]: 保持宽高比(这里是正方形)
-
overflow-hidden: 防止内容溢出
-
object-contain self-center: 保证图片不被拉伸,居中显示
🦴 添加骨架屏 / Add Skeleton Placeholder
<div className="relative w-full aspect-[1/1] overflow-hidden">
<Skeleton className="absolute inset-0 w-full h-full" />
</div>
来源:https://www.cnblogs.com/sabertobih/p/18934400 |