Список элементов с помощью flexbox - а иногда и ссылки

У меня есть несколько элементов списка, которые содержат изображение и текст, выровненные рядом. Часть изображения всегда остается той же ширины (в пикселях), тогда как я бы хотел, чтобы поле рядом с ней заполняло остальное пространство.

В моем примере все работает нормально. Но если я хочу, чтобы элемент списка стал ссылкой

.advanced-list {
  padding-left: 0;
  list-style: none;
}

.advanced-list li {
  display: flex;
  min-height: 80px;
  zoom: 1;
  flex-direction: row;
  background-color: #f5f5f5; 
}

.advanced-list li .list-img {
  display: block;
  height: 235px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover;
  flex: 0 0 235px;
  order: 1;
}

.advanced-list li .list-content {
  padding: 15px;
  line-height: 1.3333333;
  order: 2;
}

.advanced-list li .list-content .list-header {
  margin-top: 0;
  margin-bottom: 5px;
}

.advanced-list li .advanced-link {
  display: flex;
  color: #252525;
  text-decoration: none;
  flex-direction: row;
}

.advanced-list li+li {
  margin-top: 5px;
}
<ul class = "advanced-list">
  <li>
    <div class = "list-content">
      <h4 class = "list-header">List item without link</h4> Lorem ipsum dolor...
    </div>
    <div class = "list-img" style = "background-image: url('https://placehold.it/550x300?text=Img:+550+x+300')"></div>
  </li>
  <li>
    <a href = "#" class = "advanced-link">
      <div class = "list-content">
        <h4 class = "list-header">List item with link inside</h4> Short text - keep width 100%.
      </div>
      <div class = "list-img" style = "background-image: url('https://placehold.it/550x300?text=Img:+550+x+300')"></div>
    </a>
  </li>
</ul>

добавив ссылку вокруг него, что-то пойдет не так:

Посмотри на эту скрипку - второй элемент списка имеет ссылку - как здесь применить гибкий бокс, чтобы текст занимал оставшуюся ширину?

flex-grow: 1; в a
Temani Afif 02.10.2018 12:27

ваша структура html несовместима. Второй li не такой же, как первый. Вы обернули эту штуку тегом a, где вам нужно только добавить тег a внутри h4. Проверь это

Zohir Salak 02.10.2018 12: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
2
886
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Ваш элемент привязки .advanced-link находится в гибком контейнере. Так что у него не будет полной ширины.

Установленный :

.advanced-list li .advanced-link {
    width: 100%;
}

или

.advanced-list li .advanced-link {
  flex: 1
}

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