Как создать контейнеры с взаимно изменяющейся шириной?

Есть 2 контейнера в общем родителе с flex-grow. У каждого установлена авто-ширина, т.е. занимают место по своему контенту:
626b7f4d04a5f988192356.png

Если в родителе перестает хватать ширины, то больший по ширине контейнер должен начать сжиматься, меньший остается как есть.
626b804e420e1128172588.png

Если контейнеры поравнялись в ширине, то должны начаться сжиматься оба:
626b8099b03bc675387911.png

При увеличении ширины родительского контейнера - все возвращается в обратном порядке, т.е:
1) Если оба сжаты, то оба растут
2) Как только один вырос из них достигает своей авто-ширины, то он перестает расти и начинает расти другой
3) Как второй достиг авто-ширины, то и он перестает расти и все возвращается к первому скриншоту

Сделал все это через js, но интересует css реализация. Можно и bootstrap классы использовать. Немного уточнил и упростил прошлый вопрос. Т.е. получается цепной flex-shrink какой-то. Если это невозможно, то хотелось бы узнать почему. Пока только разобрал, что flex-shrink мне как раз плохо подходит, т.к. требует установленной ширины и применяется к ней умножение на коэф заранее установленный.
  • Вопрос задан
  • 291 просмотр
Решения вопроса 1
Пригласить эксперта
Ответы на вопрос 1
Lynn
@Lynn
nginx, js, css
Например вот так:

.box {
  display: flex;
  font-size: 18px;
  background: #fed;
  margin: 1ex;
}

.box > div {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  background: #def;
  margin: 0 1ex;
  flex: 1 1 0;
  max-width: fit-content;
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы