I have a wrapper that can have 1-5 elements.
<div class="wrapper">
<div class="element"></div>
</div>
I'd like to change the layout in which they're displayed depending on the number of them:
- 1 element: 1x1, 33.3% width
- 2 elements: 2x1, 33.3% width
- 3 elements: 3x1, 33.3% width
- 4 elements: 2x2, 50% width
- 5 elements: 3x2, 33.3% width
How can I do this without JavaScript?
This is the Codepen for reference.
body {
padding: 20px;
}
.wrapper {
width: 500px;
padding: 5px 10px;
margin: 10px 0;
border: 2px dashed #5f5f5f;
display: flex;
flex-wrap: wrap;
}
.element {
font-family: Helvetica, sans-serif;
background-color: #ededed;
flex: 33.3%;
max-width: 33.3%;
margin: 10px 0;
}
.wrapper.with-4-elements .element {
flex: 50%;
max-width: 50%;
}
.wrapper-with-5-elements .element:nth(4),
.wrapper-with-5-elements .element:nth(5) {
flex: 50%;
max-width: 50%;
}
<div class="wrapper with-1-element">
<div class="element">Element 1</div>
</div>
<div class="wrapper with-2-elements">
<div class="element">Element 1</div>
<div class="element">Element 2</div>
</div>
<div class="wrapper with-3-elements">
<div class="element">Element 1</div>
<div class="element">Element 2</div>
<div class="element">Element 3</div>
</div>
<div class="wrapper with-4-elements">
<div class="element">Element 1</div>
<div class="element">Element 2</div>
<div class="element">Element 3</div>
<div class="element">Element 4</div>
</div>
<div class="wrapper with-5-elements">
<div class="element">Element 1</div>
<div class="element">Element 2</div>
<div class="element">Element 3</div>
<div class="element">Element 4</div>
<div class="element">Element 5</div>
</div>




