Как исправить css, чтобы держать 4 карты подряд, пока они выровнены по центру?

Столкнулись с проблемой со свойством css (Flex). У меня есть несколько карт, и я хочу, чтобы в строке было по 4 карты, чтобы, независимо от размера экрана, всегда было 4 карты в строке. Поскольку я использую элемент отображения как Flex, он настраивается в соответствии с размером экрана. Очень новичок в этой работе разработчика внешнего интерфейса, не могли бы вы проверить и исправить мое свойство CSS, чтобы выровнять 4 карты в ряд.

вот код: https://codesandbox.io/s/tender-feynman-we6n9s?file=/src/productsConfig.js

В основном здесь я хочу 4 карты в ряду.

Отвечает ли это на ваш вопрос? Флексбокс: 4 элемента в ряду

Coolis 08.02.2023 08:33

Ваша карта может увеличиваться в ширину (например, на 25% ширины контейнера) или она должна оставаться прежнего размера?

Terry 08.02.2023 08:40

тот же размер, чтобы сохранить

Shankar Panda 08.02.2023 09:05
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
0
3
126
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете добавить flex-basis, он устанавливает размер окна содержимого, поэтому ваш css flex-basis: 25% на классе .react-card-flip

Обновлять

если вы не хотите увеличивать свое пространство, попробуйте следующее:

.react-card-flip:nth-child(3n+1):not(:first-child) {
  break-after: always;
}

этот код просто нашел ваш 4-й элемент и добавил к нему разрыв. Просто попробуйте уменьшить свою страницу, используя ctrl + прокрутите мышь, чтобы увидеть. Это max 4 карт в ряду.

примерить песочницу

Я не хочу увеличивать расстояние между картами

Shankar Panda 08.02.2023 08:32

Смотрите мое обновление, я думаю, что это самый простой способ.

Eve 08.02.2023 09:07

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

Shankar Panda 08.02.2023 09:13

только что добавил ссылку на песочницу, она остается максимум 4 карты в строке

Eve 08.02.2023 09:23

не работает: zjqvmh.csb.app . пожалуйста, используйте больший экран или используйте масштабирование, чтобы увидеть эффект

Shankar Panda 08.02.2023 09:38

Вы имеете в виду ровно 4 карты в ряду, как МИН. 4 карты в ряду, так и МАКС. 4 карты в ряду?

Eve 08.02.2023 09:57

4 карты в ряду

Shankar Panda 08.02.2023 10:00

не очень работает на большом экране

Shankar Panda 08.02.2023 10:19

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

Eve 08.02.2023 10:24

Давайте продолжим обсуждение в чате.

Shankar Panda 08.02.2023 10:29

Попробуйте добавить этот стиль в свой файл style.css для адаптивного автоматического переноса карточек на пространство.

.container {
  display: flex;
  flex-wrap: wrap;
}

.card {
  width: calc(25% - 40px);
  margin: 20px;
}

можешь выложить рабочий код. Я пытался, но не работал. вы можете использовать кодыandbox

Shankar Panda 08.02.2023 09:05
Ответ принят как подходящий

Используя flex, и поскольку вы хотите, чтобы ширина карточек была фиксированной (300 пикселей), и предполагая, что вы работаете только на больших экранах, чтобы гарантировать отображение 4 элементов по 300 пикселей подряд, лучше также установить ширину Например, родительский элемент равен 1500 пикселей, в этом случае в одной строке будут отображаться только 4 элемента с полями и отступами.

.container {
  display: flex;
  flex-wrap: wrap;
  width: 1500px;
  justify-content: center;
  margin: auto;
}

.react-card-flip {
  flex: 1 0 300px;
  border: 1px solid red;
  margin: 5px;
  min-height: 50px;
}
<div class = "container">
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
  <div class = "react-card-flip"></div>
</div>

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

Shankar Panda 08.02.2023 09:17

В вашем коде вы должны применить CSS-часть карты к классу реакции-карты-переворота, а не к классу карты, потому что прямые дочерние элементы родительского элемента flex (контейнера) являются элементом с классом реакции-карты-переворота, а не карты , я обновил свой код, чтобы он был адаптирован к вашим именам классов, не могли бы вы проверить и сказать мне.

amel 08.02.2023 09:57

Спасибо, Амель. Я пробовал, когда экран меняется, поля между картами увеличиваются.

Shankar Panda 08.02.2023 10:06

в основном ширина и высота карты не должны меняться. Единственное, должно быть 4 карты в ряд, а контейнер должен быть выровнен по центру. Невозможно исправить контейнер

Shankar Panda 08.02.2023 10:15

Но что делать если ширина устройства 800px например, как отобразить 4 элемента по 300px в одну строку на устройстве шириной 800px?

amel 08.02.2023 10:30

Кроме того, если мы предполагаем, что вы используете свое приложение только на больших устройствах, я думаю, что идеальным решением будет зафиксировать также ширину контейнера, например, 1500 пикселей. В этом случае вы будете уверены, что только В одной строке будет отображаться 4 элемента размером 300px, не более.

amel 08.02.2023 10:30

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

Shankar Panda 08.02.2023 10:33

Я обновил свой код здесь, вы можете проверить, и я добавил автоматическое поле, чтобы отображать элементы по центру.

amel 08.02.2023 10:39

Думал проблема в "неправильном уровне".

Нажмите "f12" в https://we6n9s.csb.app/, тогда вы увидите 1-й уровень "контейнер".
2-й уровень - "реагировать-перевернуть карту".
3-й уровень - "реагировать-перевернуть карту".
4-й уровень - "реагировать-карта-лицевая сторона".
5-й уровень - "карточка".

Может быть, вы могли бы использовать .react-card-flip, но не .card

.react-card-flip {
  position: flex;
  flex: 1 0 22%;
  border: 1px solid red;
  width: 22%;
  height: 300px;
  min-height: 50px;
}

ширина карты для меня остается постоянной.

Shankar Panda 08.02.2023 10:10

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