I'm trying to display a list of items in a flexbox with three items in every row. The issue is that when there are only two items in the last row, the last item is aligned right, and not centre.
I tried a solution suggested in other threads about this, adding an after pseudo element to the parent element, but that doesn't quite work, as it places the last element right next to the previous element with no space between them. How can I get them to align correctly?
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
list-style: none;
}
.container::after {
content: '';
flex: auto;
}
.item {
flex: 0 0 30%;
}
<ul class="container">
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
<li class="item"><div><img src="https://via.placeholder.com/150"></div></li>
</ul>
EDIT:
Here's a new snippet, to clarify what I mean. I want space between the li elements.
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
list-style: none;
}
.container::after {
content: '';
flex: auto;
}
.item {
flex: 0 0 30%;
background-color: blue;
height: 100px;
margin: 10px 0;
border: 2px solid #999;
}
<ul class="container">
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>