PHP
<!-- Modal Button -->
<a href="#" class="button" data-modals="modal_gallery">Click Here</a>
<!-- modal_gallery.php -->
<div class="modal_gallery_wrap">
<div class="modal_gallery_slider || hidden_slider" data-slider="modal_gallery_slider">
<?php for ($i = 1; $i < 15; $i++) :?>
<div class="slider_item">
<div class="img_wrap">
<img src="/img/gallery_img_<?= $i?>.jpg" alt="">
</div>
<div class="slider_desc">
<div class="desc">
<h4>Fish Art Restaurant</h4>
<p>Take a culinary tour of Toronto’s diverse cultural neighbourhoods with Luma’s innovative seafood-driven menu, and enjoy hand-crafted cocktails and a robust wine list.</p>
</div>
<span class="dialog_close">Close</span>
</div>
</div>
<?php endfor ;?>
</div>
<div class="modal_gallery_slider_nav || hidden_slider" data-slider="modal_gallery_slider_nav">
<?php for ($i = 1; $i < 15; $i++) :?>
<div>
<div class="slider_item">
<img src="/img/gallery_img_<?= $i?>.jpg" alt="">
</div>
</div>
<?php endfor ;?>
</div>
</div>
CSS
.modal_gallery.dialog{padding:0;border-top:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;max-width:70vw}
.modal_gallery.dialog .icon_close.dialog_close{display:none}
.modal_gallery_slider.hidden_slider{opacity:0;overflow:hidden;max-height:58rem}
.modal_gallery_slider .slick-prev,.modal_gallery_slider .slick-next{width:4rem;height:4rem;-webkit-transform:translate(0,-37%);-moz-transform:translate(0,-37%);-ms-transform:translate(0,-37%);-o-transform:translate(0,-37%);transform:translate(0,-37%);background-color:#fff}
.modal_gallery_slider .slick-prev::after,.modal_gallery_slider .slick-next::after{width:1.8rem;height:1.8rem;border-width:0 .4rem .4rem 0;border-color:#000;top:50%}
.modal_gallery_slider .slick-prev{left:.5rem}
.modal_gallery_slider .slick-prev::after{left:54%;-webkit-transform:translate(-50%,-50%) rotate(135deg);-moz-transform:translate(-50%,-50%) rotate(135deg);-ms-transform:translate(-50%,-50%) rotate(135deg);-o-transform:translate(-50%,-50%) rotate(135deg);transform:translate(-50%,-50%) rotate(135deg)}
.modal_gallery_slider .slick-next{right:.5rem}
.modal_gallery_slider .slick-next::after{left:43%;-webkit-transform:translate(-50%,-50%) rotate(-45deg);-moz-transform:translate(-50%,-50%) rotate(-45deg);-ms-transform:translate(-50%,-50%) rotate(-45deg);-o-transform:translate(-50%,-50%) rotate(-45deg);transform:translate(-50%,-50%) rotate(-45deg)}
.modal_gallery_slider .slider_item{padding:.5rem}
.modal_gallery_slider .img_wrap{display:block;padding-top:44%;overflow:hidden;position:relative}
.modal_gallery_slider .img_wrap img{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;font-family:'object-fit: cover;'}
.modal_gallery_slider .slider_desc{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-moz-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:2rem}
.modal_gallery_slider .slider_desc .desc{width:-webkit-calc(100% - 5.2rem);width:-moz-calc(100% - 5.2rem);width:calc(100% - 5.2rem);padding:0 4rem 0 0}
.modal_gallery_slider .slider_desc .desc p{margin:0}
.modal_gallery_slider .slider_desc .desc p:last-child{margin-bottom:0}
.modal_gallery_slider .slider_desc .dialog_close{font-size:1.6rem;font-weight:700;color:#09a5be;text-transform:uppercase;-webkit-box-flex:0;-webkit-flex:0 0 5.2rem;-moz-box-flex:0;-ms-flex:0 0 5.2rem;flex:0 0 5.2rem;margin:.1rem 0 0;cursor:pointer}
.modal_gallery_slider_nav{padding:2rem;background:#eee}
.modal_gallery_slider_nav.hidden_slider{opacity:0;overflow:hidden;max-height:12.1rem}
.modal_gallery_slider_nav .slider_item{display:block;padding-top:67%;overflow:hidden;position:relative;margin:0 .5rem}
.modal_gallery_slider_nav .slider_item img{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-moz-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);-o-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block;width:100%;height:100%;border:.3rem solid transparent;-o-object-fit:cover;object-fit:cover;font-family:'object-fit: cover;'}
.modal_gallery_slider_nav .slick-current .slider_item img{border-color:#09a5be}
@media only screen and (max-width: 992px) {
.modal_gallery.dialog{max-width:85vw}
}
@media only screen and (max-width: 767px) {
.modal_gallery_slider .slider_desc .desc{width:100%;padding:0}
.modal_gallery_slider .slider_desc .dialog_close{display:none}
.modal_gallery_slider .slick-prev,.modal_gallery_slider .slick-next{width:3rem;height:3rem}
.modal_gallery_slider .slick-prev::after,.modal_gallery_slider .slick-next::after{width:1.4rem;height:1.4rem;border-width:0 .3rem .3rem 0}
}
@media only screen and (max-width: 450px) {
.modal_gallery_slider .img_wrap{padding-top:66%}
.modal_gallery_slider .slick-prev,.modal_gallery_slider .slick-next{width:2.5rem;height:2.5rem}
.modal_gallery_slider .slick-prev::after,.modal_gallery_slider .slick-next::after{width:1rem;height:1rem;border-width:0 .2rem .2rem 0}
}
SCSS
/* Vars */
$cb: #000000;
$main: #09a5be;
$white: #ffffff;
.modal_gallery.dialog {
padding: 0;
border-top: none;
border-radius: 0;
max-width: 70vw;
.icon_close.dialog_close {
display: none;
}
}
.modal_gallery_slider {
&.hidden_slider {
opacity:0;
overflow:hidden;
max-height:58rem;
}
.slick-prev, .slick-next {
width: 4rem;
height: 4rem;
transform: translate(0, -37%);
background-color: $white;
&::after {
width: 1.8rem;
height: 1.8rem;
border-width: 0 0.4rem 0.4rem 0;
border-color: $cb;
top: 50%;
}
}
.slick-prev {
left: .5rem;
&::after {
left: 54%;
transform: translate(-50%, -50%)rotate(135deg);
}
}
.slick-next {
right: .5rem;
&::after {
left: 43%;
transform: translate(-50%, -50%)rotate(-45deg);
}
}
.slider_item {
padding: .5rem;
}
.img_wrap {
display: block;
padding-top: 44%;
overflow: hidden;
position: relative;
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: block;
width: 100%;
height: 100%;
object-fit: cover;
font-family: 'object-fit: cover;';
}
}
.slider_desc {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 2rem;
.desc {
width: calc(100% - 5.2rem);
padding: 0 4rem 0 0;
p {
margin: 0;
}
p:last-child {
margin-bottom: 0;
}
}
.dialog_close {
font-size: 1.6rem;
font-weight: 700;
color: $main;
text-transform: uppercase;
flex: 0 0 5.2rem;
margin: .1rem 0 0;
cursor: pointer;
}
}
}
.modal_gallery_slider_nav {
padding: 2rem;
background: #eeeeee;
&.hidden_slider {
opacity:0;
overflow:hidden;
max-height:12.1rem;
}
.slider_item {
display: block;
padding-top: 67%;
overflow: hidden;
position: relative;
margin: 0 .5rem;
img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: block;
width: 100%;
height: 100%;
border: .3rem solid transparent;
object-fit: cover;
font-family: 'object-fit: cover;';
}
}
.slick-current .slider_item img {
border-color: $main;
}
}
@media only screen and (max-width: 992px) {
.modal_gallery.dialog {max-width: 85vw}
}
@media only screen and (max-width: 767px) {
.modal_gallery_slider .slider_desc .desc {width: 100%;padding: 0}
.modal_gallery_slider .slider_desc .dialog_close {display: none}
.modal_gallery_slider .slick-prev, .modal_gallery_slider .slick-next {width: 3rem;height: 3rem;}
.modal_gallery_slider .slick-prev::after, .modal_gallery_slider .slick-next::after {width: 1.4rem;height: 1.4rem;border-width: 0 0.3rem 0.3rem 0}
}
@media only screen and (max-width: 450px) {
.modal_gallery_slider .img_wrap {padding-top: 66%}
.modal_gallery_slider .slick-prev, .modal_gallery_slider .slick-next {width: 2.5rem;height: 2.5rem;}
.modal_gallery_slider .slick-prev::after, .modal_gallery_slider .slick-next::after {width: 1rem;height: 1rem;border-width: 0 0.2rem 0.2rem 0}
}
JavaScript
if (type == 'modal_gallery') {
$('.dialog').addClass('modal_gallery');
var $slidersArray = [];
function findSliders() {
$('body').find('.hidden_slider').each(function () {
var slider_Item = $(this).data('slider');
$slidersArray.push(slider_Item);
});
for (var itemS = 0; itemS < $slidersArray.length; itemS++) {
var $sliderTimer = 'sliderTimer_' + itemS,
$slides = $slidersArray[itemS];
fixSlider($slides, $sliderTimer)
}
}
findSliders();
function fixSlider($sliderSlick, $Timer) {
var slider = $('.' + $sliderSlick);
$Timer = setInterval(function () {
var $sliderSlick = $('body').find(slider);
if ($sliderSlick.hasClass('slick-initialized')) {
$sliderSlick.find('.slick-dots').wrap('<div class="dots_wrapper"<>/div>');
$sliderSlick.removeClass('hidden_slider');
clearInterval($Timer);
}
}, 10);
}
$('.modal_gallery_slider').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: true,
dots:false,
fade: true,
draggable: false,
asNavFor: '.modal_gallery_slider_nav'
});
$('.modal_gallery_slider_nav').slick({
slidesToShow: 8,
slidesToScroll: 1,
dots: false,
arrows: false,
draggable: false,
focusOnSelect: true,
centerMode: false,
asNavFor: '.modal_gallery_slider',
responsive: [
{
breakpoint: 1201,
settings: {
slidesToShow: 6,
slidesToScroll: 1
}
},
{
breakpoint: 993,
settings: {
slidesToShow: 4,
slidesToScroll: 1
}
},
{
breakpoint: 551,
settings: {
slidesToShow: 3,
slidesToScroll: 1
}
},
{
breakpoint: 401,
settings: {
slidesToShow: 2,
slidesToScroll: 1
}
}
]
});
var sliderDescHeight = $('.modal_gallery_slider .img_wrap').innerHeight();
var sliderArrow = $('.modal_gallery_slider .slick-arrow');
var sliderArrowHeight = sliderDescHeight / 2;
sliderArrow.css('top', sliderArrowHeight);
}