flex-wrap: wrap-reverse
только оборачивает содержимое вдоль поперечной оси в обратном направлении.
Вы также можете добавить: flex-direction: row-reverse
, чтобы расположить содержимое вдоль главной оси в обратном порядке.
Это все еще оставляет проблему, когда количество предметов не кратно четырем. Чтобы исправить это, мы могли бы добавить поле к последнему элементу в зависимости от количества элементов, используя селекторы nth-last-child
и first-child
css.
:nth-last-child(4n+3):first-child {
margin-right: 25%;
}
:nth-last-child(4n+2):first-child {
margin-right: 50%;
}
:nth-last-child(4n+1):first-child {
margin-right: 75%;
}
Полный CSS:
body {
background-color: #2d2d2d;
}
.container {
width: 1024px;
display: flex;
flex-wrap: wrap-reverse;
flex-direction: row-reverse;
background-color: #ffffff;
padding: 1em;
margin: 1em auto;
:nth-last-child(4n+3):first-child {
margin-right: 25%;
}
:nth-last-child(4n+2):first-child {
margin-right: 50%;
}
:nth-last-child(4n+1):first-child {
margin-right: 75%;
}
.item {
height: 10em;
width: 25%;
padding: 0.5em;
box-sizing: border-box;
border: 1px solid black;
img {
width: 100%;
}
}
}
Обновлен Codepen здесь:
https://codepen.io/roboreilly/pen/ZoBZge