Причина
Причина в том, что ваши ящики - это больше, чем контейнер width
, а в вашем контейнере нет flex-wrap: wrap;
(значение по умолчанию - no-wrap
). Таким образом, ящики не могут переноситься, а ваш контейнер - display: flex
, его width
не будет увеличиваться со своими дочерними элементами (прямоугольниками), и будет вести себя как блок и просто заполняет экран.
Решение
Попробуйте display: inline-flex
вместо этого. Поскольку он ведет себя так же, как inline
элементов, его width
будет расти, чтобы соответствовать его дочерним элементам width
.
Вот рабочий пример, основанный на вашем коде:
почему бы не inline-block
?
Потому что это не уберет пространство между ящиками, и вы должны приклеить элементы ящика друг к другу следующим образом:
<div class='box'></div><!-- no extra white space here --><div class='box'></div>
Вы можете использовать float
, чтобы решить эту проблему или уменьшить font-size
контейнера, который не так хорош, как inline-flex
решение.
Также обратите внимание, что хотя inline-block
может работать для вас, это не ответ на этот вопрос.