Обрезать текст в элементе flex

У меня есть заголовок с левой и правой стороной. Левая сторона содержит некоторый текст, который я хочу сохранить в одной строке, усекая многоточием, если это необходимо. Однако, когда я применяю к нему 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>

Кто-нибудь знает, как сохранить заголовок в одной строке, но обрезать его, чтобы заголовок не выходил за пределы?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
1 102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно отключить минимальную ширину по умолчанию, добавив 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)

Другие вопросы по теме