EN
CSS - grid with 3 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 3 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 (33%
- margins + paddings + borders of the element). To create grid with columns_count
elements per row add columns_count - 1
spacer
elements at the end.
xxxxxxxxxx
1
<html>
2
<head>
3
<style>
4
5
div.container {
6
border: 1px solid red;
7
display: flex;
8
flex-wrap: wrap;
9
}
10
11
div.child {
12
margin: 10px;
13
padding: 10px;
14
border: 1px solid red;
15
flex: calc(33% - 42px); /* 33% - (margins + paddings + borders) */
16
}
17
18
div.spacer {
19
margin: 0 10px;
20
padding: 0 10px;
21
flex: calc(33% - 40px); /* 33% - (margins + paddings) */
22
}
23
24
</style>
25
</head>
26
<body>
27
<div class="container">
28
<div class="child">1</div>
29
<div class="child">2</div>
30
<div class="child">3</div>
31
<div class="child">4</div>
32
<div class="child">5</div>
33
<div class="child">6</div>
34
<div class="child">7</div>
35
<div class="spacer"></div>
36
<div class="spacer"></div>
37
</div>
38
</body>
39
</html>
xxxxxxxxxx
1
<html>
2
<head>
3
<style>
4
5
div.container {
6
border: 1px solid red;
7
display: flex;
8
flex-wrap: wrap;
9
}
10
11
div.child {
12
margin: 10px;
13
padding: 10px;
14
border: 1px solid red;
15
flex: calc(33% - 42px); /* 33% - (margins + paddings + borders) */
16
}
17
18
div.spacer {
19
margin: 0 10px;
20
padding: 0 10px;
21
flex: calc(33% - 40px); /* 33% - (margins + paddings) */
22
}
23
24
</style>
25
</head>
26
<body>
27
<div class="container">
28
<div class="child">1</div>
29
<div class="child">2</div>
30
<div class="child">3</div>
31
<div class="child">4</div>
32
<div class="child">5</div>
33
<div class="child">6</div>
34
<div class="child">7</div>
35
<div class="child">8</div>
36
<div class="spacer"></div>
37
<div class="spacer"></div>
38
</div>
39
<br /><br /><br />
40
<div class="container">
41
<div class="child">1</div>
42
<div class="child">2</div>
43
<div class="child">3</div>
44
<div class="child">4</div>
45
<div class="child">5</div>
46
<div class="child">6</div>
47
<div class="child">7</div>
48
<div class="child">8</div>
49
<div class="child">9</div>
50
<div class="spacer"></div>
51
<div class="spacer"></div>
52
</div>
53
</body>
54
</html>