fr单位是CSS Grid实现等宽多列最直接可靠的方式,通过grid-template-columns配合repeat()或混搭固定值与minmax(),可灵活实现等宽、响应式及自适应布局。
用 fr 单位是 CSS Grid 实现等宽多列最直接、最可靠的方式。
grid-template-columns 配合多个 1fr
每列写一个 1fr,Grid 会自动均分可用空间。例如三等宽列:
container { display: grid; grid-template-columns: 1fr 1fr 1fr; }
更简洁写法(推荐):
grid-template-columns: repeat(3, 1fr);
四列、五列同理,改数字即可,无需计算百分比或像素值。
想让中间几列等宽,左右加固定宽度侧边栏?fr 依然适用:
grid-template-columns: 200px 1fr 1fr 1fr 200px;
中间三列会平分剩余空间,彼此严格等宽,不受两侧固定值影响。
也可用 minmax() 防止过窄:
grid-template-columns: 200px repeat(3, minmax(0, 1fr))) 200px;
fr 配合 auto-fit 更灵活避免为不同屏幕写多个 repeat(n, 1fr)?用 auto-fit + minmax() 自动适配:
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr))));
浏览器会在容器内尽可能放入最小宽度 250px 的列,超出则换行,每列仍保持等宽(因都用 1fr)。
fr 和 % 或 flex 的行为fr 是 Grid 特有单位,按**剩余空间比例分配**,不是父容器总宽的百分比;
1fr 2fr → 占剩余空间的 1/3 和 2/31fr 1fr 1fr → 各占 1/3,真正等宽gap 占用——Grid 会自动从总宽中扣除间隙再分配