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

Material-UI中两个同行Typography换行时序号脱离正文怎么解决?

Material-UI 同行Typography序号与文本换行分离问题解决

问题描述

使用Material-UI开发时遇到排版问题:放在同一行的两个Typography组件,长文本换行时序号和正文出现分离,短文本时显示正常,已尝试修改行、列、nowrap、breakword等属性均未解决。
原实现代码如下:

<Grid item container direction="column" >
{Array.isArray(x.sense) && x.sense && x.sense.map((x, index) => (
    <>
        {Array.isArray(x.gloss) ?
            <Grid item container direction="row">
                <Typography key={index} style={{ color: "#90a4ae", fontSize: "25px" }}>
                    {index + 1 + '. '}
                </Typography>
                <Typography key={index + 1} style={{ color: "#000000", fontSize: "25px", marginLeft: "5px" }}>
                    {x.gloss.toString().replace(/,/g, ', ')}
                </Typography>
            </Grid> : null
        }
    </>
))}

解决方案

方案1:合并到同一个Typography组件

将序号用span标签包裹后,嵌套进正文所在的同一个Typography组件即可解决问题,实现代码如下:

<Typography key={index + 1} style={{ color: "#000000", fontSize: "25px", marginLeft: "5px" }}>
    <span style={{ color: "#90a4ae", fontSize: "25px" }}>{index + 1 + '. '}</span>
    {x.gloss.toString().replace(/,/g, ', ')}
</Typography>

方案2:保留独立Typography组件的实现

如果业务需要保留两个独立的Typography组件,可以修改外层Grid和组件的样式属性:

<Grid item container direction="row" alignItems="baseline" gap="5px">
    <Typography key={index} style={{ color: "#90a4ae", fontSize: "25px", flexShrink: 0 }}>
        {index + 1 + '. '}
    </Typography>
    <Typography key={index + 1} style={{ color: "#000000", fontSize: "25px", flex: 1 }}>
        {x.gloss.toString().replace(/,/g, ', ')}
    </Typography>
</Grid>

原因说明

原写法中序号和正文分属两个独立的Typography组件,二者是独立的排版单元,空间不足时浏览器会将第二个Typography整体换到下一行,导致序号和正文分离。
合并到同一个Typography后,序号和正文属于同一文本流,排版时序号会和正文首字绑定,换行时不会出现分离的情况;使用弹性布局属性调整独立组件的排版规则,也可以实现相同的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:57:05