Многострочный список flexbox с переполнением текста: многоточие

Я хотел бы добиться стиля прикрепленного списка в HTML5 / CSS.

Однострочные элементы можно легко сделать с помощью flexbox (см. Ниже). Однако я не могу понять, как добиться двухстрочных элементов: если я разрешаю перенос, «Заголовок элемента списка» больше не будет усечен (многоточие) ...

Стоит ли использовать CSS-сетку? Или это перебор?

Многострочный список flexbox с переполнением текста: многоточие

Вот моя однострочная реализация flexbox:

ul {
  padding: 0;
  border: 1px solid red;
  list-style-type: none;
}

li {
  display: flex;
  margin: 0;
  border-bottom: 1px solid gray;
}
    
div.icon {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  margin: 15px;
  background-color: lightcoral;
}

span.title {
  flex-grow: 1;
  flex-shrink: 1;
  margin: 15px;
  white-space: nowrap; 
  overflow: hidden;
  text-overflow: ellipsis;
}

span.tag {
  flex-shrink: 0;
  margin: 15px;
}

span.second-line {
  margin: 15px;
}
<ul>
    <li>
      <div class = "icon"></div>
      <span class = "title">List Item Title</span>
      <span class = "tag">Some tag</span>
    </li>
    <li>
      <div class = "icon"></div>
      <span class = "title">Very Super Long List Item Title With Added Characters to Ensure Truncation</span>
      <span class = "tag">Some tag</span>
    </li>
    <li>
      <div class = "icon"></div>
      <span class = "title">List Item Title</span>
    </li>
  </ul>
stackoverflow.com/q/33058004/3597276
Michael Benjamin 18.06.2018 14:44
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
1
1
848
1

Ответы 1

Вы можете достичь результата, используя два дочерних Div внутри li и имея отдельный Flex для обоих дочерних Div вместо li. Найдите приведенный ниже код, который подходит мне.

Код:

ul {
  padding: 0;
  border: 1px solid red;
  list-style-type: none;
}

li {
  margin: 0;
  border-bottom: 1px solid gray;
}

div.icon {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  margin: 15px;
  background-color: lightcoral;
}

span.title {
  flex-grow: 1;
  flex-shrink: 1;
  margin: 15px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

span.tag {
  flex-shrink: 0;
  margin: 15px;
}

span.second-line {
  margin: 15px;
}

.mainHeading {
  display: flex;
}

.subHeading {
  display: block;
}
<ul>
  <li>
    <div class = "mainHeading">
      <div class = "icon"></div>
      <span class = "title">List Item Title</span>
      <span class = "tag">Some tag</span>
    </div>
  </li>
  <li>

    <div class = "mainHeading">
      <div class = "icon"></div>
      <span class = "title">Very Super Long List Item Title With Added Characters to Ensure Truncation</span>
      <span class = "tag">Some tag</span>
    </div>

    <div class = "subHeading">
      <span class = "title">List Item Sub Title</span>
      <span class = "tag">Some another tag</span>
    </div>


  </li>
  <li>
    <div class = "mainHeading">
      <div class = "icon"></div>
      <span class = "title">List Item Title</span>
    </div>
  </li>
</ul>

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