You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chakra UI响应式网格实现同宽自适应高度(类似Google Keep)问题求助

问题原因

你当前使用的Chakra UI SimpleGrid 底层基于CSS Grid实现,默认规则下同一行内所有网格项的高度会统一对齐,由该行内容最多的元素高度决定,因此所有Box组件高度被强制撑平,无法实现随内容自适应的错落效果。

解决方案

根据你需要的效果可以选择以下两种实现方式:

方案1:Flex布局实现(简单通用,适配大多数类Google Keep场景)

该方案同一行高度由该行最高元素决定,不同行高度独立,元素高度完全随内容自适应:

<Box display="flex" flexWrap="wrap" gap={5}>
  {notes.map((note, index) => (
    <Box 
      key={index}
      // 响应式控制不同屏幕下的宽度占比,对应1/2/3/4列布局
      flex={["1 1 100%", "1 1 calc(50% - 10px)", "1 1 calc(33.33% - 10px)", "1 1 calc(25% - 15px)"]}
      minWidth="200px"
    >
      <Text as='h5' isTruncated fontWeight='bold' fontSize='large'>
        {note.title}
      </Text>
      <Text>{note.text}</Text>
    </Box>
  ))}
</Box>

方案2:Column瀑布流实现(完全错落无空白,和Google Keep效果完全一致)

该方案实现真正的瀑布流布局,短内容会自动填充上方空白,不会出现行底部留白:

<Box 
  // 响应式控制列数,对应1/2/3/4列布局
  columnCount={[1, 2, 3, 4]}
  columnGap={5}
>
  {notes.map((note, index) => (
    <Box 
      key={index}
      mb={5}
      breakInside="avoid" // 防止单个笔记被拆分到两列显示
    >
      <Text as='h5' isTruncated fontWeight='bold' fontSize='large'>
        {note.title}
      </Text>
      <Text>{note.text}</Text>
    </Box>
  ))}
</Box>

内容的提问来源于stack exchange,提问作者selby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:24:01