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

Material UI Accordion中flex布局标题溢出容器如何实现省略号截断

Material UI Accordion 标题溢出省略修复方案

核心原因

flex布局中,子项默认的最小宽度是其内容的实际宽度,就算给父容器设置了flex:1占用剩余空间,长文本也会撑开容器,最终导致整个Accordion内容溢出。

修复步骤

  • 给承载标题的第一个flex项设置flex: 1的同时,新增min-width: 0属性,允许容器宽度收缩到小于内容宽度。
  • 给标题文本元素添加以下三个强制样式,实现超出显示省略号的效果:
    white-space: nowrap; /* 禁止文本换行 */
    overflow: hidden; /* 超出容器部分隐藏 */
    text-overflow: ellipsis; /* 隐藏部分显示为省略号 */
    
  • 给承载按钮的第二个固定宽度flex项添加flex-shrink: 0属性,避免布局挤压时按钮容器宽度被压缩。

代码示例

import Accordion from '@mui/material/Accordion';
import AccordionSummary from '@mui/material/AccordionSummary';
import Typography from '@mui/material/Typography';
import Button from '@mui/material/Button';
import Box from '@mui/material/Box';

function DemoAccordion() {
  return (
    <Accordion>
      <AccordionSummary>
        {/* 标题容器 */}
        <Box sx={{ flex: 1, minWidth: 0, mr: 2 }}>
          <Typography
            sx={{
              whiteSpace: 'nowrap',
              overflow: 'hidden',
              textOverflow: 'ellipsis'
            }}
          >
            超长标题测试超长标题测试超长标题测试超长标题测试超长标题测试超长标题测试
          </Typography>
        </Box>
        {/* 固定宽度按钮容器 */}
        <Box sx={{ width: '140px', flexShrink: 0 }}>
          <Button size="small">编辑</Button>
          <Button size="small">删除</Button>
        </Box>
      </AccordionSummary>
      {/* AccordionDetails内容省略 */}
    </Accordion>
  )
}

若保留Accordion默认的展开箭头,无需额外调整样式,上述配置可直接生效,箭头占据的空间会自动在计算剩余宽度时扣除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:21:04