Так вы можете добиться чего-то похожего на показанную картинку с помощью CSS -Grid.
Все, что вы делаете, это настраиваете сетку и ее измерения (сделано в #grid), а затем даете каждому ребенку сетку. -column-start и grid-row-start-number (первое число в grid-столбце и grid-row), а также grid-column-end-end и и и grid-row-end (последний номер). А остальное - маги c.
(в CSS -Сетка - это фактически не вызываемые номера строк и столбцов, вы ссылаетесь на линии сетки, которые вы можете легко сделать видимыми в Chrome или Firefox Инструменты разработчика.)
Подробнее о размещении на основе строки в CSS -Сетка можно прочитать здесь: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout/Line-based_Placement_with_CSS_Grid
Чтобы добавить изображения к этому просто поместите их в качестве фоновых изображений, как это в контейнерах изображений:
background-image: url(yourimage.jpg);
background-size:cover;
И это все. Довольно классная штука, если вы спросите меня. Каждый должен взглянуть на CSS -Grid.
#grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: 60px repeat(4, 1fr);
width: 100vw;
height: 590px;
}
#navbar {
background: blue;
grid-column: 1 / 5;
grid-row: 1 / 1;
}
#image1 {
background: cyan;
grid-column: 1 / 3;
grid-row: 2 / 6;
}
#image2 {
background: orange;
grid-column: 3 / 5;
grid-row: 2 / 4;
}
#image3 {
background: magenta;
grid-column: 3 / 4;
grid-row: 4 / 6;
}
#image4 {
background: brown;
grid-column: 4 / 5;
grid-row: 4 / 6;
}
<div id="grid">
<div id='navbar'></div>
<div id="image1"></div>
<div id="image2"></div>
<div id="image3"></div>
<div id="image4"></div>
</div>