У меня есть заголовок с левой и правой стороной. Левая сторона содержит некоторый текст, который я хочу сохранить в одной строке, усекая многоточием, если это необходимо. Однако, когда я применяю к нему white-space: nowrap
, весь заголовок выходит за пределы своего контейнера. Вот что я имею в виду:
.container {
width: 300px;
height: 400px;
border: 1px solid black;
}
.header {
height: 80px;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border: 1px solid red;
}
.header-right,
.header-left {
display: flex;
align-items: center;
justify-content: center;
border: 1px solid blue;
}
.title {
text-overflow: ellipsis;
white-space: nowrap;
}
img {
height: 20px;
width: 20px;
margin: 10px;
}
<div class = "container">
<div class = "header">
<div class = "header-left">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
<span class = "title">Title: Keep me on a single line</span>
</div>
<div class = "header-right">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
</div>
</div>
</div>
Кто-нибудь знает, как сохранить заголовок в одной строке, но обрезать его, чтобы заголовок не выходил за пределы?
Вам нужно отключить минимальную ширину по умолчанию, добавив min-width:0
, и отключить сжатие изображений и их контейнера, добавив flex-shrink:0;
и добавив overflow:hidden
.container {
width: 300px;
height: 400px;
border: 1px solid black;
}
.header {
height: 80px;
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
border: 1px solid red;
}
.header-right,
.header-left {
display: flex;
align-items: center;
justify-content: center;
border: 1px solid blue;
min-width:0; /* Added */
}
.title {
text-overflow: ellipsis;
white-space: nowrap;
overflow:hidden; /* Added */
}
img {
height: 20px;
width: 20px;
margin: 10px;
flex-shrink:0; /* Added */
}
.header-right {
flex-shrink:0; /* Added */
}
<div class = "container">
<div class = "header">
<div class = "header-left">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
<span class = "title">Title: Keep me on a single line</span>
</div>
<div class = "header-right">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
<img src = "https://image.flaticon.com/icons/png/128/181/181548.png">
</div>
</div>
</div>
Связанный:
Почему гибкие элементы не уменьшаются за размер содержимого? (Чтобы понять min-width
)
Почему flex-child ограничен родительским размером? (Чтобы понять flex-shrink
)