Как заставить flex-wrap сбалансировать упакованные предметы?

Я делаю адаптивный макет, и на небольших экранах боковая панель <ul> превращается в display: flex с flex-wrap: wrap, а элементы стилизованы под flex-grow: 1. Это выглядит хорошо большую часть времени:

Как заставить flex-wrap сбалансировать упакованные предметы?

Однако это выглядит довольно плохо, когда переполняется только пара элементов, например, на немного большем экране:

Как заставить flex-wrap сбалансировать упакованные предметы?

Есть ли способ заставить flex-box попытаться обернуть вещи, основываясь на сбалансированной общей ширине элемента в строке? Например, во втором примере было бы гораздо логичнее, чтобы «Люди» (и, возможно, также «Протоколы») перетекали во вторую строку.

Или есть альтернативный подход, который я должен использовать, чтобы выложить это меню?

ссылка jsfiddle

Нет... это невозможно без медиа-запросов. Flexbox/CSS не знает и не может обнаружить перенос/переполнение.

Paulie_D 02.03.2019 11:27
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
1
244
1

Ответы 1

Вы можете добавить медиа-запрос, чтобы изменить поведение в небольших окнах просмотра.

Например:

@media (max-width: 768px) {
  nav li {
    min-width: 25%;
  }
}

Таким образом, по крайней мере, у вас не будет более 4 элементов в строке на маленьком экране.

Это решение хорошо, хотя я бы предпочел, чтобы элементы могли помещаться в одну строку, если они достаточно малы, поскольку они на больших планшетах, которые достаточно узки, чтобы вызвать мобильную раскладку (которая у меня сейчас есть в max-width:800px) . Также есть другие меню, в которых больше элементов, чем это, с гораздо более разнородными длинами меток. Итак, я буду помнить об этом как о потенциальном исправлении, но я надеюсь найти что-то более общее. Спасибо!

fluffy 02.03.2019 05:59

Другие вопросы по теме