我们希望做一个下图所示的效果:
代码如下:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.container {width: 400px;background-color: lightblue;display: flex;}.label {padding: 0 16px;}.content {padding: 0 16px;flex: 1;background-color:rgba(200, 50, 10, .3);}.ellipse {text-overflow: ellipsis;overflow: hidden;white-space: nowrap;}</style></head><body><div class="container"><div class="label">诗歌:</div><div class="content"><div class="ellipse">参老子上善若水悟孔子博学爱人,学孟子仁礼智信,兼修身平心静气。贵有道行正义事,始让平风声雨声,荫天下一缕阳光,泽快乐密密麻麻。</div></div></div></body></html>
上述代码中,我们给content容器设置了 flex: 1 , 这样container除去左侧label剩余的宽度会被content占据。
给ellipse设置超出文本…显示。但是结果却是下图这个样子:

我们看到ellipse里的内容并没有换行,content本身的宽度也被内容撑大了。
这就是flex碰上ellipse,出现的怪异问题。
解决办法
给content加属性 min-width:0 或者 overflow: hidden 效果就正常了:
.content {
padding: 0 16px;
flex: 1;
background-color:rgba(200, 50, 10, .3);
min-width: 0;
/*overflow: hidden*/
}
