5

Заполнение оставшейся высоты или ширины в flex-контейнере

12

У меня есть 2 блока (div) рядом друг с другом в flexbox. Правый блок должен всегда иметь одинаковую ширину, а левый блок должен занимать оставшееся пространство. Однако он этого не делает, если я не задам ему конкретную ширину.

На данный момент я установил ширину левого блока на 96%, что выглядит неплохо до тех пор, пока я не сжимаю окно браузера – тогда правый блок начинает испытывать нехватку пространства.

Я понимаю, что можно оставить все как есть, но это как-то неправильно – кажется, есть способ сказать:

"правый блок всегда такой же; ты (левый блок) получаешь все оставшееся пространство."

Вот мой код:

<div class="ar-course-nav" style="display:flex; justify-content:space-between;">
  <div style="width:96%;">
    <div style="overflow:hidden; white-space:nowrap; text-overflow:ellipsis;">
      <strong title="Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!">
        Course Name Which is Really Quite Long And Does Go On a Bit But Then When You Think it's Stopped it Keeps on Going for even longer!
      </strong>
    </div>
    <div style="width:100%; display:flex; justify-content:space-between;">
      <div style="color:#555555; margin-right:8px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis;" title="A really really really really really really really really really really really long department name">
        A really really really really really really really really really really really long department name
      </div>
      <div style="color:#555555; text-align:right; white-space:nowrap;">
        Created: 21 September 2016
      </div>
    </div>
  </div>
  <div style="margin-left:8px;">
    <strong>&gt;</strong>
  </div>
</div>

Как мне правильно организовать пространство между блоками, чтобы левый блок занимал оставшееся пространство, а правый оставался фиксированной ширины?

2 ответ(ов)

0

Для элемента в контейнере с флексом используй следующие две строки:

flex-grow: 1; // Заполняет оставшееся пространство
min-width: 0; // Не использует больше пространства, чем доступно

Первое свойство flex-grow: 1 позволяет элементу занимать всё доступное пространство в контейнере. Это полезно, когда тебе нужно, чтобы элементы равномерно распределялись по ширине. Второе свойство min-width: 0 предотвращает ситуацию, когда элемент пытается занять больше места, чем ему разрешено, что может привести к переполнению контейнера или нежелательным эффектам. Используя обе строки вместе, ты обеспечишь правильное поведение элементов в флекс-контейнере.

0

Использование flex-grow: 1 позволит заполнить все доступное пространство, но если содержимое станет слишком большим, оно займет больше места. Поэтому вам нужно будет добавить min-width: 0.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь