Skip to content
Go back

Flex布局与white-space冲突问题解决方案

Edit page

Table of contents

Open Table of contents

工作中经常会用到css文本超出显示省略号

overflow:hidden; //超出的文本隐藏
text-overflow:ellipsis; //溢出用省略号显示
white-space:nowrap; //溢出不换行

但是当display:flex;碰上white-space:nowrap;的时候,会打乱flex布局。

问题再现:

https://codepen.io/houhoz/pen/gOmWPNo

预期结果应该是左边header头像完整展示,右边的文字出现超出展示省略号。

仔细分析代码,理论上确实是可以实现。

带着疑惑再一次去MDN看flex的文档,然后发现

由于我们设置了 white-space:nowrap 导致content 的内容超出了flex项目的剩余宽度,我们期望content 元素的内容区域缩小,按照MDN的说法,需要给content元素设置min-width属性

问题解决:

https://codepen.io/houhoz/pen/NWpjNdo

flex:1 到底什么含义

flex属性是flex-grow,flex-shrink和flex-basis的缩写。

flex: 1;
flex: 1 1 0%;
/* flex: 1, 它表示flex项目扩展并填充可用空间。 */

另一种关于左边内容固定尺寸,右边超出省略号的布局

可以直接对左边内容设置

flex: 0 0 40px;

参考文章:

  1. 关于display:flex碰上white-space nowrap的问题 - SegmentFault 思否
  2. https://codepen.io/aj-foster/pen/emBYPW
  3. CSS flex属性深入理解 « 张鑫旭-鑫空间-鑫生活
  4. 深入了解 Flex 属性

Edit page
Share this post on:

Previous Post
华为手机全量包刷机教程与系统优化指南
Next Post
Taro小程序WebView URL传参踩坑记录