CSS Grid - сделать следующую строку шириной 100% и равномерно распределить элементы

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

.container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
  align-items: center;
}

div {
  text-align: center;
}
<div class = "container">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
  <div>Six</div>
  <div>Seven</div>
  <div>Eight</div>
  <div>Nine</div>
  <div>Ten</div>
</div>

Я хочу, чтобы последняя строка всегда занимала 100% ширины. Возможно ли это с помощью CSS Grid?

Пример: Если Nine и Ten переполнены, я хочу, чтобы элементы располагались от начала до конца и были центрированы.

One Two Three Four Five Six Seven Eight 
          Nine         Ten

или в более тесном пространстве

One Two Three Four 
Five Six Seven Eight 
    Nine   Ten

Невозможно AFAIK с CSS-Grid. CSS не может обнаружить переполнение, поэтому элементы не могут быть выбраны, поскольку они переполнены.

Paulie_D 18.07.2024 22:35

Почему сетка? Это классический флексбокс, применяемый display: flex к контейнеру и flex: 1 к дочерним элементам.

vsync 18.07.2024 22:35
codepen.io/Paulie-D/pen/jOjWJdY
Paulie_D 18.07.2024 22:40
Улучшение производительности загрузки с помощью 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
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

CSS grid (прочитайте свойство вслух) не является подходящим инструментом для автоматизации роста детей.
CSS flex и flex-grow (в дочерних элементах) — при использовании CSS-обертки

.container {
  display: flex; /* Don't use "grid" when "flex" is what you need */
  flex-wrap: wrap;   /* Or: flex-flow: row wrap; // children to new line if they overflow */
  
  & div {
    flex: 1; /* shorthand for: flex-grow:1; flex-shrink:1; flex-basis:0; */
    outline: 1px solid red;
    text-align: center;
    padding: 1em 2em;
  }
}
<div class = "container">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
  <div>Six</div>
  <div>Seven</div>
  <div>Eight</div>
  <div>Nine</div>
  <div>Ten</div>
</div>

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