CSS 使用 flex-direction 列截断 Flexbox 父级中的文本

Fra*_*ank 7 html css alignment flexbox

如何截断下面的文本?最小宽度:0;当 flex-direction 设置为 column 时,hack 不起作用。这个答案也没有。

.parent {
  border: 1px solid red;
  display: flex;
  align-items: center;
  flex-direction: column;
  width: 300px;
}

.text {
  white-space: nowrap;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
   <img src="http://placekitten.com/g/200/200" />
  <div class="text">
    Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum 
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

kuk*_*kuz 9

当您给出align-items: center溢出时textparent宽度不受限制因此省略号不会出现。

如果您删除align-items: center它,它会起作用,因为align-items: stretch这是默认设置 - 但图像现在会被拉伸:

.parent {
  border: 1px solid red;
  display: flex;
  /*align-items: center;*/
  flex-direction: column;
  width: 300px;
}

.text {
  white-space: nowrap;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
   <img src="http://placekitten.com/g/200/200" />
  <div class="text">
    Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum 
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

解决方案

添加width: 100%text- 请参阅下面的演示:

.parent {
  border: 1px solid red;
  display: flex;
  align-items: center;
  flex-direction: column;
  width: 300px;
}

.text {
  white-space: nowrap;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent">
   <img src="http://placekitten.com/g/200/200" />
  <div class="text">
    Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum 
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

最小宽度:0;当 flex-direction 设置为 column 时,hack 不起作用。

请注意,min-width: 0如果要覆盖弹性项目宽度,因为它在行方向上是自动的(对于您使用的min-height方向)。min-height: 0请参阅下面在列 flexbox中使用的示例: