CSS, как рассчитывается max-width в flex контейнере, если один из дочерних элементов имеет flex-grow = 1?

Ссылка скопирована
1 ответ

Всем привет, я не супер спец в CSS, поэтому залип с пониманием.
вот пример на кодпэн.
https://codepen.io/tstwqsqh-the-looper/pen/GRPJWwb

Хочу чтобы внутри класса child можно было без
проблем задать элемент (класс problem) любой ширины
и чтобы child спокойно сделал overflow.

Но при таком макете если убрать из .wrapper свойство max-width: calc(100% - 216px);
то мы получим что problem своей шириной растягивает весь макет.

CSS, как рассчитывается max-width в flex контейнере, если один из дочерних элементов имеет flex-grow = 1?

Вопрос в том как сделать так чтобы правильно посчиталась ширина от
.outer-wrapper у которого max-width: 1000px;
И чтобы не писать жесткое правило на .wrapper с значением max-width: calc(100% - 216px);

Спасибо заранее.

Дополнительно:

.wrapper {     min-width: 0; }

.wrapper { min-width: 0; }

  • Офигеть =D.
    Будет очень круто если ссылку дадите почему такое работает))

    Но даже если не дадите сам найду очень интересно, спасибо.

  • kosuha, здесь че то есть https://habr.com/ru/articles/329820/
    и со ссылкой на спецификацию https://www.w3.org/TR/css-flexbox-1/#min-size-auto
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

При использовании flex контейнеров в CSS, свойство flex-grow определяет, насколько каждый дочерний элемент будет увеличиваться по ширине относительно других дочерних элементов. Если у одного из дочерних элементов задано свойство flex-grow: 1, это означает, что этот элемент будет занимать все доступное пространство в родительском контейнере после того, как остальные элементы займут свое минимальное пространство.

Теперь, когда речь идет о свойстве max-width в контексте flex контейнеров, оно определяет максимальную ширину, которую элемент может занимать. Если установлено значение max-width для дочернего элемента с flex-grow: 1, то этот элемент будет увеличиваться в ширину до тех пор, пока не достигнет своего максимального значения, установленного в max-width. При этом другие дочерние элементы могут занимать оставшееся пространство в контейнере.

Пример использования в PHP:

<div>
  <div style="flex-grow: 1;max-width: 200px;background-color: red">Element 1</div>
  <div style="background-color: blue">Element 2</div>
</div>

<div> <div style="flex-grow: 1;max-width: 200px;background-color: red">Element 1</div> <div style="background-color: blue">Element 2</div> </div>

В данном примере первый дочерний элемент будет занимать всё доступное пространство в контейнере из-за свойства flex-grow: 1, но его ширина не будет больше 200px из-за свойства max-width. Второй дочерний элемент займет оставшееся пространство в контейнере.

Таким образом, при использовании свойства max-width в flex контейнерах, элемент с flex-grow: 1 будет увеличиваться в ширину до значения max-width, после чего пространство будет распределено между другими дочерними элементами в соответствии с их настройками flex-grow.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно