CSS Grid Solution
Поскольку у вас нет ограничений в отношении CSS Grid, обратите внимание на то, что он может сделать для вас при размещении элементов в направлениях x и y.Свойство grid-template-area
делает обработку этого типа макета тривиальной.Вы определяете области шаблона в родительском элементе, а затем размещаете дочерние элементы в любую область, которую вы хотите.Вы можете себе представить, что это действительно открывает то, что вы можете сделать в различных адаптивных / адаптивных контекстах.
.container {
width: 600px;
height: 600px;
background-color: blue;
display: grid;
grid-template-areas: "largetop largetop smalltop1"
"largetop largetop smalltop2"
"smallbottom1 smallbottom2 smallbottom3";
}
.photo-1 {
grid-area: largetop;
}
.photo-2 {
grid-area: smallbottom1;
}
.photo-3 {
grid-area: smallbottom2;
}
.photo-4 {
grid-area: smalltop1;
}
.photo-5 {
grid-area: smalltop2;
}
.photo-6 {
grid-area: smallbottom3;
}
.photo {
background-color: red;
}
.large {
width: 400px;
height: 400px;
}
.small {
width: 200px;
height: 200px;
}
<div class="container">
<div class="photo photo-1 large">Photo 1</div>
<div class="photo photo-2 small">Photo 2</div>
<div class="photo photo-3 small">Photo 3</div>
<div class="photo photo-4 small">Photo 4</div>
<div class="photo photo-5 small">Photo 5</div>
<div class="photo photo-6 small">Photo 6</div>
</div>
jsFiddle
Решение Flexbox
Как только большая фотография занимает доступное пространство контейнера,следующие два элемента переносятся в следующий ряд с помощью flex-wrap: wrap
.
.container {
width: 600px;
height: 600px;
background-color: blue;
display: flex;
/* row direction */
}
.left {
display: flex;
flex-wrap: wrap;
flex-basis: 400px;
}
.photo {
background-color: red;
}
.large {
width: 400px;
height: 400px;
}
.small {
width: 200px;
height: 200px;
}
<div class="container">
<div class="left">
<div class="photo large">Photo 1</div>
<div class="photo small">Photo 2</div>
<div class="photo small">Photo 3</div>
</div>
<div class="right">
<div class="photo small">Photo 4</div>
<div class="photo small">Photo 5</div>
<div class="photo small">Photo 6</div>
</div>
</div>