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

基于Material UI实现键值对表格如何解决长键挤压值的对齐问题

解决方案

你遇到的对齐问题根源是每一行的布局是独立的,左侧键列的宽度随内容动态变化,没有统一的宽度约束,因此右侧值列的起始位置会随左侧键的长度变化而偏移。

优化实现方案

推荐采用CSS Grid统一控制列宽+数据抽离遍历的方案,既解决对齐问题,也大幅简化代码逻辑:

import React from 'react';
import {Box, Container, Typography} from '@material-ui/core';

export default function Hello( ) {
  // 抽离键值对数据,后续新增/修改直接调整该数组即可
  const summaryList = [
    { label: 'Country 123', value: 'USA' },
    { label: 'Country 4323', value: 'USA' },
    { label: 'Country', value: 'USA' },
  ]
 
  return (
      <Container>
        <Box pl={2} pb={3}>
          <Typography variant="h4">
            Summary
          </Typography>
        </Box>
        {/* 统一用CSS Grid控制两列宽度,左列固定200px,右列占剩余全部空间 */}
        <Box 
          sx={{
            display: 'grid',
            gridTemplateColumns: '200px 1fr',
            gap: '16px',
            alignItems: 'center'
          }}
        >
          {summaryList.map((item, index) => (
            <React.Fragment key={index}>
              <Box sx={{p: 2}}>
                {item.label}
              </Box>
              <Box sx={{p: 2}}>
                {item.value}
              </Box>
            </React.Fragment>
          ))}
        </Box>
      </Container>
  )
}

方案说明

  • 布局层面:通过gridTemplateColumns: '200px 1fr'给所有行的左列统一设置固定宽度,右列自动占满剩余空间,不管左列内容长度是多少,右列的起始位置完全一致,对齐问题直接解决。如果你的键可能出现更长的内容,也可以把左列宽度改成minmax(180px, max-content),自动适配最长的键的宽度,同时保证所有列对齐。
  • 代码层面:抽离键值对为数组遍历渲染,避免了重复编写多段几乎完全相同的Grid代码,后续维护成本更低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:39:04