0

How can I implement a photo-like layout using flexbox?

enter image description here

<div class="row">
<div class="col-md-6"></div>
<div class="col-md-3"></div>
<div class="col-md-3"></div>
<div class="col-md-6"></div>
<div class="col-md-3"></div>
<div class="col-md-3"></div>
</div>
Majid
  • 13
  • 2

3 Answers3

1

This is easier done via grid. Here's the implementation:

.row {
  display: grid;
  grid-template-areas: "a b c" "d d c" "e f c";
  grid-gap: 5px;
}

div {
  border: 1px solid black;
  padding: 5px;
}

.a {
  grid-area: a;
}

.b {
  grid-area: b;
}

.c {
  grid-area: c;
}

.d {
  grid-area: d;
}

.e {
  grid-area: e;
}

.f {
  grid-area: f;
}
<div class="row">
  <div class="col-md-6 a">a</div>
  <div class="col-md-3 b">b</div>
  <div class="col-md-3 c">c</div>
  <div class="col-md-6 d">d</div>
  <div class="col-md-3 e">e</div>
  <div class="col-md-3 f">f</div>
</div>
Sana Mumtaz
  • 803
  • 7
  • 16
0

HTML CODES:

<div class="main-div">
    <div class="leftside">
        <div class="leftside-1">
            <div class="leftside-1a">1a</div>
            <div class="leftside-2a">2a</div>
        </div>
        <div class="leftside-2">2</div>
        <div class="leftside-3">
            <div class="leftside-1c">1c</div>
            <div class="leftside-2c">2c</div>
        </div>
    </div>
    <div class="rightside">
    </div>
</div>

CSS CODES:

* {
  margin: 0;
  padding: 0;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

html {
  font-size: 10px;
}

.main-div {
  width: 100vw;
  min-height: 100vh;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.main-div .leftside {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 40rem;
  flex: 1 1 40rem;
  -webkit-box-orient: vertical;
  -webkit-box-direction: normal;
  -ms-flex-direction: column;
  flex-direction: column;
  background-color: darkkhaki;
}

.main-div .leftside .leftside-1 {
  width: 100%;
  min-height: 25%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  flex-direction: row;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.main-div .leftside .leftside-1 .leftside-1a {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 20rem;
  flex: 1 1 20rem;
  background-color: red;
}

.main-div .leftside .leftside-1 .leftside-2a {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 20rem;
  flex: 1 1 20rem;
  background-color: cyan;
}

.main-div .leftside .leftside-2 {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 40rem;
  flex: 1 1 40rem;
  min-height: 50%;
  background-color: green;
}

.main-div .leftside .leftside-3 {
  width: 100%;
  min-height: 25%;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -ms-flex-direction: row;
  flex-direction: row;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

.main-div .leftside .leftside-3 .leftside-1c {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 20rem;
  flex: 1 1 20rem;
  background-color: red;
}

.main-div .leftside .leftside-3 .leftside-2c {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 20rem;
  flex: 1 1 20rem;
  background-color: cyan;
}

.main-div .rightside {
  -webkit-box-flex: 1;
  -ms-flex: 1 1 40rem;
  flex: 1 1 40rem;
  background-color: darkgrey;
}
Mutlu ŞEN
  • 46
  • 5
0

* {
  box-sizing: border-box;
}

.row {
  display: grid;
  grid-template-columns: repeat(4, 100px);
  grid-template-rows: repeat(3, 200px);
  grid-gap: 10px;
  width: max-content;
  margin: auto;
}

.col {
  background-color: red;
  display: flex;
  justify-content: center;
  align-items: center;
}

.col:nth-child(3) {
  background-color: blue;
  grid-column: 3 / 5;
  grid-row: 1 / 4;
}

.col:nth-child(4) {
  grid-column: 1 / 3;
}
<div class="row">
  <div class="col col-md-3">col3</div>
  <div class="col col-md-3">col3</div>
  <div class="col col-md-6">col6</div>
  <div class="col col-md-6">col6</div>
  <div class="col col-md-3">col3</div>
  <div class="col col-md-3">col3</div>
</div>
Arman Ebrahimi
  • 2,035
  • 2
  • 7
  • 20