EN
CSS - grid with 5 elements per row using flexbox (keeping the same items size)
0
points
In this article, we would like to show you how to create grid with 5 elements per row using flexbox in CSS.
In the examples below, we create spacer elements that are invisible at the end of our grid. Spacer and child elements use flex property to occupy the same amount of space (20% - margins + paddings + borders of the element). To create grid with columns_count elements per row add columns_count - 1 spacer elements at the end.
Practical examples
Example 1
// ONLINE-RUNNER:browser;
<html>
<head>
<style>
div.container {
border: 1px solid red;
display: flex;
flex-wrap: wrap;
}
div.child {
margin: 10px;
padding: 10px;
border: 1px solid red;
flex: calc(20% - 42px); /* 20% - (margins + paddings + borders) */
}
div.spacer {
margin: 0 10px;
padding: 0 10px;
flex: calc(20% - 40px); /* 20% - (margins + paddings + borders) */
}
</style>
</head>
<body>
<div class="container">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="spacer"></div>
<div class="spacer"></div>
<div class="spacer"></div>
<div class="spacer"></div>
</div>
</body>
</html>
Example 2
// ONLINE-RUNNER:browser;
<html>
<head>
<style>
div.container {
border: 1px solid red;
display: flex;
flex-wrap: wrap;
}
div.child {
margin: 10px;
padding: 10px;
border: 1px solid red;
flex: calc(20% - 52px); /* 20% - (margins + paddings + borders) */
}
div.spacer {
margin: 0 10px;
padding: 0 10px;
flex: calc(20% - 50px); /* 20% - (margins + paddings + borders) */
}
</style>
</head>
<body>
<div class="container">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="child">9</div>
<div class="spacer"></div>
<div class="spacer"></div>
<div class="spacer"></div>
<div class="spacer"></div>
</div>
<br /><br /><br />
<div class="container">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="child">9</div>
<div class="child">10</div>
<div class="spacer"></div>
<div class="spacer"></div>
<div class="spacer"></div>
<div class="spacer"></div>
</div>
</body>
</html>
See also
-
CSS - grid with 3 elements per row using flexbox (keeping the same items size)
-
CSS - grid with 4 elements per row using flexbox (keeping the same items size)