我们希望做一个下图所示的效果:
代码如下:
<!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*/
}