Комментарии 18
Да, помню, как пробовал решить Вашу задачу, будучи уверенным, что это не так сложно, но на втором часу понял, что тут есть какой-то нетривиальный приём, который не сильно известен, но работает.
Решение однозначно не является тривиальным и это решение однозначно не то, что первым придёт в голову.
То, что такое решение есть вообще и то, что оно было найдено — очень круто.
Спасибо за статью, Дмитрий.
решение, конечно, интересное, но с эпитетами вышел небольной перебор :)
озарение
безумно
чудеса
трудно поверить
фантастический факт
тотальный парадокс
очень интересным
Просто респект! Как раз на днях такая задача попалась, тоже вертел туда-сюда, в итоге забил и поставил медиа-запрос. Попробую переделать)
jsfiddle.net/2p8x1dvf
По-моему, в этом примере не хватает переноса элементов меню на следующую строку, для экранов меньше 465px. Для этого достаточно к
.menuRow
добавить 2 стиля:flex-wrap: wrap;
justify-content: center;
А вообще, статья очень классная!
То есть, на мой взгляд, в примере с меню мы не можем обойтись полностью без media-запросов. Но данный приём с flex позволяет значительно дольше не переживать по поводу того, что меню соскочит вниз.
Мне кажется, что в flex-grow играет роль не само значение, а отношение к другим. То есть если все будут по 1 или по 2, будет то же самое, разве нет?
Тоже самое будет ровно до момента переноса элемента на следующую строку. И вот там уже будет отличие между 1 и 0.5
Забавный случай, но задача очень редкая, а результат немного хаотичен. В подавляющем большинстве случаев, хотят чтоб выглядело все одинаково, несмотря на то, что подобные решения позволяют запихнуть максимум контента в отведенное пространство.
jsfiddle.net/wh1oesac/1
joren.co/flex-grow-9999-hack
Мне статья очень понравилась как пример "outside the box thinking" и важности внимания к мелочам: почти неизвестная (я сам узнал о ней впервые) особенность стандарта, упомянутая лишь вскользь в примечании к спецификации, в умелых руках выручает во вполне реальной практической задаче. И в целом приятно видеть такое подробное и наглядное объяснение, как всё работает. Спасибо!
Нетривиальная расстановка элементов на flexbox без media-запросов