JSFiddle - React, Tailwind, and code Playground
by joshmoto
HTML
<div class="gallery-wrapper">
<div class="gallery-item trigger">
<div class="gallery-img bg-img" style="background-image:url('https://via.placeholder.com/4x6');"> </div>
<div class="gallery-filter"><i class="fas fa-search"></i></div>
<div class="lightbox"><img src="https://via.placeholder.com/4x6"></div>
</div>
<div class="gallery-item trigger">
<div class="gallery-img bg-img" style="background-image:url('https://via.placeholder.com/6x4');"> </div>
<div class="gallery-filter"><i class="fas fa-search"></i></div>
<div class="lightbox"><img src="https://via.placeholder.com/6x4"></div>
</div>
<div class="gallery-item trigger">
<div class="gallery-img bg-img" style="background-image:url('https://via.placeholder.com/4x6');"> </div>
<div class="gallery-filter"><i class="fas fa-search"></i></div>
<div class="lightbox"><img src="https://via.placeholder.com/4x6"></div>
</div>
<div class="gallery-item trigger">
<div class="gallery-img bg-img" style="background-image:url('https://via.placeholder.com/6x4');"> </div>
<div class="gallery-filter"><i class="fas fa-search"></i></div>
<div class="lightbox"><img src="https://via.placeholder.com/6x4"></div>
</div>
<div class="gallery-item trigger">
<div class="gallery-img bg-img" style="background-image:url('https://via.placeholder.com/4x6');"> </div>
<div class="gallery-filter"><i class="fas fa-search"></i></div>
<div class="lightbox"><img src="https://via.placeholder.com/4x6"></div>
</div>
<div class="gallery-item trigger">
<div class="gallery-img bg-img" style="background-image:url('https://via.placeholder.com/6x4');"> </div>
<div class="gallery-filter"><i class="fas fa-search"></i></div>
<div class="lightbox"><img src="https://via.placeholder.com/6x4"></div>
</div>
<div class="gallery-item trigger">
<div class="gallery-img bg-img"...
CSS
.gallery-wrapper {
display: flex;
flex-direction: row;
flex-wrap: wrap;
margin: -25px 0 0px -25px;
}
.gallery-item {
flex: 1 1 18%;
margin: 25px 0 0 25px;
position: relative;
}
.gallery-img {
width: 100%;
height: 100%;
border-radius: 5px 5px 5px 5px;
}
.gallery-filter {
opacity: 0;
display: flex;
justify-content: center;
align-items: center;
position: absolute;
z-index: 900;
top: 0;
bottom: 0;
left: 0;
right: 0;
font-size: 2em;
background-color: var(--light-filter);
color: var(--light-grey-text);
transition: opacity 0.5s ease;
cursor: pointer;
}
.gallery-filter:hover {
opacity: 1;
}
.lightbox {
display: none;
position: fixed;
z-index: 999;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: var(--dark-filter);
cursor: pointer;
}
.lightbox img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: auto;
height: 100%;
border-radius: 0px;
}
@media (max-width: 768px) {
.gallery-wrapper {
flex-direction: column;
flex-wrap: nowrap;
margin: 0px;
}
.gallery-item {
margin: 0px 0px 25px 0px;
}
.gallery-item:last-child {
margin-bottom: 0px;
}
.gallery-filter:hover {
opacity: 0;
}
}
JavaScript
$(document).ready(function() {
var gallery_item_width = $(".gallery-item").width();
var gallery_item_height = (gallery_item_width / 4) * 3;
$(".gallery-item").css("height", gallery_item_height);
});
if ($(window).width() > 768) {
$(".trigger").click(function() {
$(this).find(".lightbox").toggle();
});
}