Когда вы задаете align-items: center
, text
переполняет parent
, а ширина не ограничена , поэтому многоточие не появится.
Если вы удалите 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;
}
<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>
Решение
Добавьте 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%;
}
<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>
минимальная ширина: 0; хак не работает, когда flex-direction установлено в
колонка.
Обратите внимание, что в min-width: 0
, если для переопределения ширины гибкого элемента используется значение auto в направлении строки (для направления column вы используете min-height
). См. Пример ниже для min-height: 0
, используемого в flexbox столбца :