Как я могу обрезать текст ниже? Минимальная ширина: 0; hack не работает, когда для flex-direction установлено значение column. Так же как и этот отвечать.
.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>





Когда вы даете 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>The min-width: 0; hack doesn't work when flex-direction is set to column.
Обратите внимание, что в min-width: 0, если для переопределения ширины гибкого элемента, она равна авто в направлении строки (для направления столбец вы используете min-height). См. пример ниже для min-height: 0, используемого в флексбокс столбца:
Замените display: flex; в родительском классе на display: block и добавьте в тег img следующее:
.parent {
border: 1px solid red;
display: block;
align-items: center;
width: 300px;
}
img{
display:block;
margin:auto;
}
.text {
white-space: nowrap;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
margin: 0 auto;
}<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>Спасибо! Хотя это тоже работает, я принял ответ kukkuz, потому что он использует flexbox.
Не беспокойтесь, рад помочь!
У меня был усеченный текст, вложенный в столбец
flexbox. Я добавилwidth: 100%к каждому предку в дереве, и это сработало, спасибо!