AlexeyGfi
@AlexeyGfi
YouTube >>> Битриксоид из Колхоза

Как быть с хвостами флексбоксов?

Всем привет!

Хочу, чтобы плитки в контейнере:
- были резиновыми;
- не были шире определённого значения;
- образовавщееся свободное место (из-за ограниченной ширины) равномерно распределялось между ними.

На флексах всё норм делается кроме хвостов.
Например, флекс расставляет конечные плитки так:
8461f8843fee4e228429fbf072dd8f9c.jpg
...а мне нужно так, как в гридах:
539ab3ab5cf44689a134d55971db9aaa.jpg

--- jsfiddle ---
Подскажите, как выйти из положения?
  • Вопрос задан
  • 828 просмотров
Решения вопроса 1
AlexeyGfi
@AlexeyGfi Автор вопроса
YouTube >>> Битриксоид из Колхоза
Придумалось необычное решение. Нужно добить хвост элементами-пустышками.

jsfiddle

В количестве
L — 2
где L — количество элементов в списке
«минус два», потому что когда в хвосте один элемент, он корректно прижимается к левому краю, а вот когда их в хвосте уже два, тогда возникает смещение.

Можно скриптом после загрузки страницы, можно при создании страницы на бекэнде (всё-равно програмно генерятся элементы на странице, длина списка известна).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Astrohas
@Astrohas
Python/Django Developer
.astrohas {
  display: flex;
  flex-flow: row wrap;
  justify-content: space-between;
}

.astrohas:after {
  content: "";
  flex: auto;
}

как то так. Но тут проблема в том что верхние элементы растягиваются по ширине, а нижние нет и пропадают отступы, так что если вид последней строки критичен, юзайте inline-block вместо flex
Ответ написан
@zompin
Лучше оберните каждый item в контейнер, и отступы между item'ами делайте паддингами в этих контейнерах, так вы решите данную проблему, даже без display:flex и независимо от количества элементов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы