推荐答案
fr
单位是 CSS Grid 布局中一个非常强大的单位,代表的是可用空间的一部分。它可以帮助我们更灵活地分配网格容器内的剩余空间。
简单来说,1fr
就表示剩余可用空间的一份。如果多个网格轨道使用了 fr
单位,那么剩余空间会按照 fr
的比例进行分配。
例如,如果一个网格容器有三列,定义为 grid-template-columns: 1fr 2fr 1fr;
,那么剩余空间会被分成 4 份 (1+2+1),第一列和第三列各占 1/4 的空间,第二列占 2/4 的空间。
本题详细解读
fr
单位的概念
在 CSS Grid 布局中,我们使用 grid-template-columns
和 grid-template-rows
属性来定义网格轨道的大小。除了常见的 px
、em
、rem
等单位,还有一种特殊的单位 fr
,它是 fractional unit (分数单位) 的缩写。
fr
单位表示网格容器剩余空间的 一部分。剩余空间是指网格容器在减去固定大小的轨道 (例如使用 px
、em
等单位定义的轨道) 和网格间距后剩余的空间。
fr
单位的分配机制
比例分配: 当多个轨道都使用了
fr
单位时,剩余空间会按照fr
单位的比例进行分配。 例如,grid-template-columns: 1fr 2fr 1fr;
会将剩余空间分成 4 份,第一列和第三列各占 1 份,第二列占 2 份。与固定单位的混合使用:
fr
单位可以与固定大小的单位(如px
、em
等)混合使用。浏览器会先计算固定大小的轨道,然后再将剩余空间分配给使用fr
单位的轨道。例如,grid-template-columns: 100px 1fr 2fr;
会先固定第一列宽度为100px
,然后将剩余空间分成 3 份,第二列占 1 份,第三列占 2 份。考虑
grid-gap
:fr
单位计算剩余空间时会考虑网格间距(grid-gap
或者column-gap
,row-gap
)。网格间距会从可用空间中扣除,然后剩余空间再被分配。
fr
单位的优势
- 响应式布局:
fr
单位非常适合创建灵活的响应式布局。当容器大小改变时,fr
单位会自动调整轨道的大小以适应剩余空间。 - 避免复杂计算: 使用
fr
单位可以避免手动计算网格轨道的大小,特别是当布局涉及到多个可变尺寸的元素时。 - 更简洁的 CSS:
fr
单位使 CSS 代码更加简洁,更易于维护。
示例
-- -------------------- ---- ------- --------------- - -------- ----- ---------------------- ----- --- ---- --------- ----- - ---------- - ----------------- ---------- -------- ----- ----------- ------- -
在这个示例中,第一列宽度固定为 100px
,剩余空间会被分成 3 份,第二列占 1 份,第三列占 2 份。同时,grid-gap: 10px;
表示列与列之间有 10px 的间距,这个间距也会被考虑在 fr
单位的计算中。