I'm going crazy with the net. For my website, I have a modular grid with a fixed size of 3 x 2. In this grid I can distribute, with a space of 1 px, between each element, some blocks.
I can have 5 types of blocks:
- huge, block 3 x 2
- big-square block 2 x 2
- horizontal, block 2 x 1
- vertical block 1 x 2
- square, block 1 x 1.
In this image, I show several options, and the tablet is wrong. 
I need to generate a grid using code, so I don’t want to create X fixed templates for filling, I want one template to adapt itself. Now I use float and some class for each option.
Example for the first coating option
<section class="cover variant-1">
<div class="cover-block horizontal" id="block-1">
<img alt="image" src="https://via.placeholder.com/900x350" />
</div>
<div class="cover-block small" id="block-2">
<img alt="image" src="https://via.placeholder.com/450x350" />
</div>
<div class="cover-block square" id="block-3">
<img alt="image" src="https://via.placeholder.com/450x350" />
</div>
<div class="cover-block horizontal" id="block-4">
<img alt="image" src="https://via.placeholder.com/900x350" />
</div>
</section>
And for the second cover option
<section class="cover variant-2">
<div class="cover-block big-square" id="block-1">
<img alt="image" src="https://via.placeholder.com/900x700" />
</div>
<div class="cover-block vertical" id="block-2">
<img alt="image" src="https://via.placeholder.com/450x700" />
</div>
</section>
CSS
.cover {
float: none;
max-width: 1350px;
max-height: 700px;
margin: 0;
}
.cover .cover-block {
float: left;
position: relative;
border: 0px solid #fff;
}
.cover .cover-block img {
width: 100%;
height: 100%;
}
.cover .cover-block.huge {
width: 1350px;
height: 700px;
}
.cover .cover-block.vertical {
width: 450px;
height: 700px;
}
.cover .cover-block.horizontal {
width: 900px;
height: 350px;
}
.cover .cover-block.big-square {
width: 900px;
height: 700px;
}
.cover .cover-block.square {
width: 450px;
height: 350px;
}
.cover .variant-1 #block-1 {
border-width: 0 1px 0 0;
}
.cover .variant-1 #block-2 {
border-width: 0 1px 0 0;
}
.cover .variant-1 #block-4 {
border-width: 1px 1px 0 0;
}
.cover .variant-1 #block-5 {
border-width: 1px 0 0 0;
}
.cover .variant-2 #block-1 {
border-width: 0 1px 0 0;
}
.cover .variant-2 #block-3 {
border-width: 1px 1px 0 0;
}
.cover .variant-2 #block-4 {
border-width: 1px 0 0 0;
}
.cover .variant-2 #block-5 {
display: none;
}
, , 1 , , .
, , flexbox?
Codepen