<div id="band">
<div style="background-color: red">John</div>
<div style="background-color: green">Paul</div>
<div style="background-color: blue">George</div>
<div style="background-color: yellow">Ringo</div>
</div>
<style>
body {
background-color: slategray;
display: flex;
justify-content: center;
align-items: center;
}
#band {
background-color: white;
margin: 0 auto;
border-style: solid;
border-width: 2px;
max-width: 740px;
width: 100%;
display: flex;
/* justify-content: flex-start; */ /* flex-start is the default justify-content */
flex-wrap: wrap;
}
#band > div {
width: 200px;
height: 200px;
/* center all the names inside each box */
display: flex;
justify-content: center;
align-items: center;
}
</style>
Its output is:

If we change the justify-content to center:
display: flex; justify-content: center; flex-wrap: wrap;
Not only the first row's items are centered, the last item will be centered as well, which is not we want:

If we want to wrap extra items at leftmost and keep the whole grid of items at the center, we need to use grid instead of flex, and replace flex-wrap: wrap to repeat autofit and minmax. To wit:
display: grid; justify-content: center; grid-template-columns: repeat(auto-fit, minmax(200px, max-content));
The output is correct:

On the above display grid and grid-template-columns settings, if we change the justify-content to end:
display: grid; justify-content: end; /* flex-end works as well, but we will just be confusing ourselves with that, we are using grid not flex */ grid-template-columns: repeat(auto-fit, minmax(200px, max-content));
The output is:

To contrast with flex-end of display: flex:
display: flex; justify-content: flex-end; flex-wrap: wrap;
The output is:

Same settings above, but with five items:

Let's use grid again with justify-content of end:
display: grid; justify-content: end; grid-template-columns: repeat(auto-fit, minmax(200px, max-content));
Its output:

This flex's flex-start:
display: flex; justify-content: flex-start; flex-wrap: wrap;
And grid's start:
display: grid; justify-content: start; grid-template-columns: repeat(auto-fit, minmax(200px, max-content));
Have same output:
No comments:
Post a Comment