JSFiddle - React, Tailwind, and code Playground
HTML
<div class="gallery">
<div class="row">
<div class="col col8 colmd12">
<a
href="https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg"
class="galleryItem"
style="background-image: url('https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg')"></a>
<div class="row">
<div class="col col6 colsm12">
<a
href="https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg"
class="galleryItem"
style="background-image: url('https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg')"></a>
</div>
<div class="col col6 colsm12">
<a
href="https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg"
class="galleryItem"
style="background-image: url('https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg')"></a>
</div>
</div>
</div>
<div class="col col4 colmd12">
<a
href="https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg"
class="galleryItem isHorisontal"
style="background-image: url('https://cdn.fishki.net/upload/post/2017/03/19/2245758/tn/02-funny-cat-wallpapercat-wallpaper.jpg')"></a>
</div>
</div>
</div>
CSS
* {
box-sizing: border-box;
}
body {
margin: 0;
}
.gallery {
padding: 0 10px;
}
.galleryItem {
position: relative;
display: block;
margin-bottom: 20px;
height: 200px;
background: #000 center / cover no-repeat;
}
@media (min-width: 819px) {
.galleryItem.isHorisontal {
height: calc(100% - 20px);
}
}
.galleryItem:after {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
transition: .2s ease-in-out;
background-color: rgba(0,0,0,.3);
opacity: 0;
content: '';
}
.galleryItem:hover:after {
opacity: 1;
}
.row {
display: flex;
flex-flow: row wrap;
margin: 0 -10px;
}
.col {
flex: 0 0 auto;
padding: 0 10px;
min-height: 1px;
}
.col4 {
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col6 {
flex-basis: 50%;
max-width: 50%;
}
.col8 {
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
@media (max-width: 819px) {
.colmd12 {
flex-basis: 100%;
max-width: 100%;
}
}
@media (max-width: 569px) {
.colsm12 {
flex-basis: 100%;
max-width: 100%;
}
}