Макет Flexbox: как установить для каждого элемента одинаковую ширину в несколько строк?

Вот мой тестовая демонстрация в codepen. Я надеюсь сохранить одинаковое поле между элементами, поэтому я использую flex-grow: 1, чтобы заполнить ширину.

Однако элементы последней строки, кажется, не сохраняют ту же ширину, что и предыдущие строки. Как это сделать?

.row{
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
 }
.col{
  min-width: 160px;
  flex-grow: 1;
  margin: 10px 10px;
  background:#eee;
  height: 120px;
}

Это то, что я хочу, аддон использует flex-grow, чтобы сохранить ту же маржу Макет Flexbox: как установить для каждого элемента одинаковую ширину в несколько строк?

Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
2
0
116
3

Ответы 3

ваш min-width может перетащить div на следующую строку, и я уменьшу его.

и вы должны использовать flex в столбцах и flex-direction в строке

что-то вроде этого:

.row{
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  flex-direction: row;
 }
.col{
  min-width: 20px;
 flex-grow: 1;
  margin: 10px 10px;
background:#eee;
 height: 120px;
 flex: 1;
}
<div class = "row">
<div class = "col">
a
</div>
<div class = "col">
b
</div>
<div class = "col">
c
</div>
</div>

.row{
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-start;
  flex-direction: row;
 }
.col{
  min-width: 200px;
 flex-grow: 1;
  margin: 10px 10px;
background:#eee;
 height: 120px;
 flex: 1;
}
<div class = "row">
<div class = "col">
a
</div>
<div class = "col">
b
</div>
<div class = "col">
c
</div>
<div class = "col">
b
</div>
<div class = "col">
c
</div>
</div>

.row{
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  flex-direction: row;
 }
.col{
  width: 200px;
 
  margin: 10px 10px;
background:#eee;
 height: 120px;
}
<div class = "row">
<div class = "col">
a
</div>
<div class = "col">
b
</div>
<div class = "col">
c
</div>
<div class = "col">
b
</div>
<div class = "col">
c
</div>
</div>

спасибо, но предметов много, что не могу поставить в один ряд... У меня были детали обновления, о которых идет речь

dyh333 12.03.2019 12:41

он автоматически перейдет к следующей строке, но если вы хотите быть в одной строке, вы должны удалить минимальную ширину.

Mahdy Aslamy 12.03.2019 12:43

нужна минимальная ширина, и автоматический переход к следующей строке в порядке. но я надеюсь, что элементы сохранят одинаковую ширину

dyh333 12.03.2019 12:46

ок посмотреть все результаты. и вы также можете использовать максимальную ширину

Mahdy Aslamy 12.03.2019 12:49

Я надеюсь, что следующий код может решить вашу проблему.

.row{
  display: flex;
  flex-wrap: wrap;
  background: red;
}
.col{
  flex: 1;
  min-width: calc(33.33% - 30px);
  max-width: calc(33.33% - 30px);
  margin: 10px 15px;
  background:#eee;
  height: 120px;
}
<div class = "row">
  <div class = "col">1</div>
  <div class = "col">2</div>
  <div class = "col">3</div>
  <div class = "col">4</div>
  <div class = "col">5</div>
</div>

спасибо, но теперь каждая строка ограничена только 3 столбцами, возможна динамическая установка min-width=160px

dyh333 12.03.2019 13:33

Вы можете использовать calc, чтобы установить для свойства ширина или гибкая основа значение calc(33.33% - 30px), чтобы оно соответствовало правое и левое поля, которое вы применили к col — см. демонстрацию ниже:

.row{
  display: flex;
  flex-wrap: wrap;
  background: red;
}
.col{
  flex-basis: calc(33.33% - 30px);
  margin: 10px 15px;
  background:#eee;
  height: 120px;
}
<div class = "row">
  <div class = "col">1</div>
  <div class = "col">2</div>
  <div class = "col">3</div>
  <div class = "col">4</div>
  <div class = "col">5</div>
</div>

спасибо, но теперь каждая строка ограничена только 3 столбцами, возможна динамическая установка min-width=160px

dyh333 12.03.2019 13:32

но если у вас есть min-width на небольших экранах, это нарушит этот макет...

kukkuz 12.03.2019 14:26

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