<!--loader thx:https://codepen.io/aurer/pen/jEGbA-->
  <div class="loader">
		 <svg version="1.1" id="loader-1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="40px" height="40px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
				<path fill="#000" d="M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z">
					  <animateTransform attributeType="xml" attributeName="transform" type="rotate" from="0 25 25" to="360 25 25" dur="0.6s" repeatCount="indefinite"/>
				</path>
		 </svg>
  </div>

  <!--gallery-->
  <div class="gallery-wrapper">
		 <div class="content">
				<div class="gallery full">
					  <div class="swiper-container">
							 <div class="swiper-wrapper">
									<div class="swiper-slide">
										  <div class="image">
												 <img src="https://images.pexels.com/photos/3663038/pexels-photo-3663038.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260" alt="" />
										  </div>

										  <div class="overlay">
												 <div class="text-wrap">
														<div class="name">
															  <span>Thumbnail Gallery</span>
														</div>
														<div class="caption">
															  <p>
																	 Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto quasi aliquam eius, blanditiis quae, explicabo praesentium corporis tempora quam et rem nulla repellendus placeat, nisi omnis earum sunt suscipit aspernatur!
															  </p>
														</div>
												 </div>
										  </div>
									</div>
									<div class="swiper-slide">
										  <div class="image">
												 <img src="https://images.pexels.com/photos/3551207/pexels-photo-3551207.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260" alt="" />
										  </div>

										  <div class="overlay">
												 <div class="text-wrap">
														<div class="name">
															  <span>Thumbnail Gallery</span>
														</div>
														<div class="caption">
															  <p>
																	 Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto quasi aliquam eius, blanditiis quae, explicabo praesentium corporis tempora quam et rem nulla repellendus placeat, nisi omnis earum sunt suscipit aspernatur!
															  </p>
														</div>
												 </div>
										  </div>
									</div>
									<div class="swiper-slide">
										  <div class="image">
												 <img src="https://images.pexels.com/photos/3375493/pexels-photo-3375493.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260" alt="" />
										  </div>

										  <div class="overlay">
												 <div class="text-wrap">
														<div class="name">
															  <span>Thumbnail Gallery</span>
														</div>
														<div class="caption">
															  <p>
																	 Lorem ipsum dolor sit amet consectetur adipisicing elit. Iusto quasi aliquam eius, blanditiis quae, explicabo praesentium corporis tempora quam et rem nulla repellendus placeat, nisi omnis earum sunt suscipit aspernatur!
															  </p>
														</div>
												 </div>
										  </div>
									</div>
							 </div>
					  </div>

					  <div class="swiper-next-button">
							 <em class="material-icons">chevron_right</em>
					  </div>
					  <div class="swiper-prev-button">
							 <em class="material-icons">chevron_left</em>
					  </div>
				</div>

				<div class="gallery thumb">
					  <div class="swiper-container">
							 <div class="swiper-wrapper">
									<div class="swiper-slide">
										  <div class="image">
												 <img src="https://images.pexels.com/photos/3663038/pexels-photo-3663038.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500" alt="" />

												 <div class="overlay">
														<em class="material-icons">remove_red_eye</em>
												 </div>
										  </div>
									</div>
									<div class="swiper-slide">
										  <div class="image">
												 <img src="https://images.pexels.com/photos/3551207/pexels-photo-3551207.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500" alt="" />

												 <div class="overlay">
														<em class="material-icons">remove_red_eye</em>
												 </div>
										  </div>
									</div>
									<div class="swiper-slide">
										  <div class="image">
												 <img src="https://images.pexels.com/photos/3375493/pexels-photo-3375493.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500" alt="" />

												 <div class="overlay">
														<em class="material-icons">remove_red_eye</em>
												 </div>
										  </div>
									</div>
							 </div>
					  </div>

					  <div class="swiper-next-button">
							 <em class="material-icons">arrow_right_alt</em>
					  </div>
					  <div class="swiper-prev-button">
							 <em class="material-icons">arrow_right_alt</em>
					  </div>
				</div>
		 </div>
  </div>


  <!--none-->
  <div class="signature">
		 <h3>plugin & author</h3>

		 <a href="https://swiperjs.com/" target="_blank">swiper slide</a>
		 <em>|</em>
		 <a href="https://www.instagram.com/jackcohle/" target="_blank">jackcohle</a>
  </div>
*{
	box-sizing: border-box;
	-webkit-box-sizing: border-box;
	word-wrap: break-word
}

$base-font			: 'Montserrat', sans-serif;
$base-color-font  : #fff;
$base-size-font   : 14px;
$base-weight-font	: 400;

.hide{display: none!important}

$primary-color 	: #ed1b28;
$secondary-color	: #2b2c36;

body{
	margin: 0;
	font-family: $base-font;
	font-size: $base-size-font;
	font-weight: $base-weight-font;
	color: $base-color-font;
	line-height: normal;
	letter-spacing: normal
}

/*loader thx:https://codepen.io/aurer*/
.loader{
	position: fixed;
	left: 0;
	top: 0;
	width: 100%;
	height: 100%;
	z-index: 3;
	background: darken($secondary-color, 12%);
	background: linear-gradient(to left, darken($secondary-color, 8%), darken($secondary-color, 12%));
	display: flex;
	align-items: center;
	justify-content: center;

	svg path,
	svg rect{
		fill: $primary-color
	}
}

/*gallery*/

.gallery-wrapper{
	position: relative;
	z-index: 1;

	.content{
		position: relative;
		overflow: hidden;
		width: 100%;
		height: 100vh;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		padding: 3vh 0;
		background: darken($secondary-color, 12%);
		background: linear-gradient(to left, darken($secondary-color, 8%), darken($secondary-color, 12%));



		.gallery{
			&.full{
				position: relative;
				display: flex;
				align-items: center;

				.swiper-container{
					.swiper-wrapper{
						display: flex;
						height: 80vh;
						align-items: center;
						
						.swiper-slide{
							position: relative;
							height: 50vh;
							transition: all .4s ease-out;
							box-sizing: border-box;
							width: auto;
							opacity: .25;

							&.swiper-slide-prev,
							&.swiper-slide-next{width: 20%!important}

							&.swiper-slide-active{
								height: 80vh;
								width: 60%!important;
								opacity: 1;

								&:hover{
									.zoom{
										opacity: 1;
										pointer-events: auto;
										visibility: visible
									}
								}
							}

							.image{
								width: 100%;
								height: 100%;

								img{
									width: 100%;
									height: 100%;
									display: block;
									object-fit: cover
								}
							}

							.overlay{
								position: absolute;
								left: 0;
								bottom: 0;
								z-index: 2;
								width: 100%;
								height: auto;
								padding: 50px 50px 30px 50px;
								background: rgb(0,0,0);
								background: linear-gradient(0deg, rgba(0,0,0, .8) 0%, rgba(0,0,0, .4) 50%, rgba(0,0,0,0) 100%);
								display: flex;
								align-items: center;
								opacity: 0;
								visibility: hidden;
								transition: all .3s ease-out;

								&.show{
									opacity: 1;
									visibility: visible;

									.text-wrap{
										opacity: 1;
										visibility: visible;
										transform: translateY(0)
									}
								}

								.text-wrap{
									display: flex;
									flex-direction: column;
									max-width: 600px;
									opacity: 0;
									visibility: hidden;
									transform: translateY(50px);
									transition: all .4s linear;

									.name{
										span{
											font-size: 2.2em;
											font-weight: 700;
										}
									}

									.caption{
										p{
											font-size: 1.16em;
											color: #fff;
											line-height: 1.7;
										}
									}
								}
							}
						}
					}
				}

				.swiper-next-button,
				.swiper-prev-button{
					position: absolute;
					z-index: 99;
					outline: none;
					transition: all .2s linear;
					width: 20%;
					height: 50vh;
					display: flex;
					justify-content: flex-end;
					align-items: center;
					cursor: pointer;

					&.swiper-button-disabled{opacity: .2}

					em{
						font-size: 68px
					}
				}

				.swiper-next-button{
					right: 0;
					padding-left: 5vw;
					justify-content: flex-start
				}

				.swiper-prev-button{
					left: 0; 
					padding-right: 5vw
				}
			}

			&.thumb{
				position: relative;
				width: 100%;
				max-width: 1020px;
				margin: 0 auto;
				display: flex;
				align-items: center;
				padding-left: 12px;

				.swiper-container{
					width: 100%;
					.swiper-wrapper{
						.swiper-slide{
							position: relative;
							height: 10vh;
							box-sizing: border-box;
							cursor: pointer;
							
							&.swiper-slide-thumb-active{
								.image{
									box-shadow: inset 0px 0px 0px 2px $primary-color;
									padding: 2px;

									.overlay{opacity: 1}
								}
							}

							.image{
								width: 100%;
								height: 100%;
								position: relative;

								img{
									width: 100%;
									height: 100%;
									display: block;
									object-fit: cover;
								}

								.overlay{
									position: absolute;
									left: 2px;
									top: 2px;
									background-color: rgba($secondary-color, .6);
									display: flex;
									align-items: center;
									justify-content: center;
									color: #fff;
									width: calc(100% - 4px);
									height: calc(100% - 4px);
									opacity: 0;
									transition: all .2s linear
								}
							}
						}
					}
				}

				.swiper-next-button{right: -15px}
				.swiper-prev-button{left: -5px;
					em{transform: rotate(180deg)}
				}

				.swiper-next-button,
				.swiper-prev-button{
					position: absolute;
					z-index: 99;
					outline: none;
					transition: all .2s linear;
					width: 32px;
					height: 20px;
					display: flex;
					justify-content: center;
					align-items: center;
					background-color: $primary-color;
					cursor: pointer;

					&:hover{
						background-color: darken($primary-color, 10%);
					}

					&.swiper-button-disabled{opacity: .2}
				}
			}
		}
	}
}


/*signature*/

.signature{
	position: absolute;
	z-index: 2;
	right: 0;
	bottom: 0;
	padding: 20px;

	h3{
		font-weight: 600;
		font-size: .926em;
		color: $primary-color;
		display: flex;
		margin-bottom: 5px
	}

	a,
	em{
		text-decoration: none;
		color: #777;
		margin-right: 5px;
		font-size: .88em;
		transition: all .2s linear;

		&:hover{
			color: #aaa
		}
	}
}

/*Mobile*/
@media only screen and (max-width: 1024px){
     .gallery-wrapper{
          .content{
               padding: 5vh 0;

               .gallery{
                    &.full{
                         .swiper-container{
                              .swiper-wrapper{
                                   height: 70vh;
                                   
                                   .swiper-slide{
                                        height: 50vh;

                                        &.swiper-slide-prev,
                                        &.swiper-slide-next{width: 10%!important}

                                        &.swiper-slide-active{
                                             height: 70vh;
                                             width: 80%!important
                                        }

                                        .overlay{
                                             padding: 20px;
     
                                             .text-wrap{
                                                  transform: translateY(0);
     
                                                  .name{
                                                       span{
                                                            font-size: 1.6em
                                                       }
                                                  }
     
                                                  .caption{
                                                       p{
                                                            font-size: 1.06em
                                                       }
                                                  }
                                             }
                                        }
                                   }
                              }
                         }

                         .swiper-next-button,
                         .swiper-prev-button{
                              width: 10%;
                              height: 50vh;
                              align-items: center;
                              justify-content: center;

                              em{
                                   font-size: 45px
                              }
                         }

                         .swiper-next-button{padding-left: 0}
                         .swiper-prev-button{padding-right: 0}
                    }

                    &.thumb{
                         padding: 0 30px;
								 max-width: 100%;
                         .swiper-container{
                              .swiper-wrapper{
                                   .swiper-slide{
                                        height: 80px
                                   }
                              }
                         }

                         .swiper-next-button{right: 10px}
                         .swiper-prev-button{left: 10px}
                    }
               }
          }
     }

     .signature{display: none}
}
View Compiled
$(function(){
    if($('.gallery-wrapper').length){
        var galleryThumbs = new Swiper('.gallery-wrapper .content .gallery.thumb .swiper-container', {
            speed: 900,
            effect: 'slide',
            spaceBetween: 12,
            grabCursor: false,
            simulateTouch: true,
            loop: false,
            watchSlidesVisibility: true,
            watchSlidesProgress: true,
            navigation: {
                nextEl: '.gallery-wrapper .content .gallery.thumb .swiper-next-button',
                prevEl: '.gallery-wrapper .content .gallery.thumb .swiper-prev-button',
            },
            breakpoints: {
                320: {
                    slidesPerView: 2,
                    spaceBetween: 10,
                },
                414: {
                    slidesPerView: 3,
                    spaceBetween: 10
                },
                768: {
                    slidesPerView: 5,
                    spaceBetween: 10
                },
                1024: {
                    slidesPerView: 7,
                    spaceBetween: 10
                }
            },
			  on: {
				  init: function() { 
				  	let containerThumbWidth = $('.gallery-wrapper .content .gallery.thumb').outerWidth();
	
	let totalThumbWidth = 0;
	
	$('.gallery.thumb .swiper-container .swiper-wrapper .swiper-slide').each(function(){
		let thumbWidth = $(this).outerWidth();
		totalThumbWidth += thumbWidth
	});
	
	
	
	if(totalThumbWidth < containerThumbWidth){
		$('.gallery.thumb .swiper-next-button, .gallery.thumb .swiper-prev-button').addClass('hide');
	}else{
		$('.gallery.thumb .swiper-next-button, .gallery.thumb .swiper-prev-button').removeClass('hide');
	}
			   }
			  }
        });

        var galleryFull = new Swiper('.gallery-wrapper .content .gallery.full .swiper-container', {
            speed: 900,
            effect: 'slide',
            slidesPerView: 3,
            spaceBetween: 0,
            centeredSlides: true,
            autoplay: {
                delay: 7000,
                disableOnInteraction: false,
                stopOnLastSlide: false
            },
            keyboard: {
                enabled: true,
            },
            grabCursor: false,
            simulateTouch: false,
            loop: true,
            navigation: {
                nextEl: '.gallery-wrapper .content .gallery.full .swiper-next-button',
                prevEl: '.gallery-wrapper .content .gallery.full .swiper-prev-button',
            },
            thumbs: {
                swiper: galleryThumbs
            },
            on: {
                slideChangeTransitionStart: function () {
                    $('.gallery-wrapper .content .gallery.full .swiper-slide .overlay').removeClass('show');
                },
                slideChangeTransitionEnd: function () {
                    $('.gallery-wrapper .content .gallery.full .swiper-slide-active .overlay').addClass('show');
                }
            }
        });
    }
});


$(window).on("load", function() {
    setTimeout(function(){
        $('.loader').fadeOut();
    }, 1000);
});

External CSS

  1. https://unpkg.com/swiper@6.0.2/swiper-bundle.min.css

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
  2. https://unpkg.com/swiper@6.0.2/swiper-bundle.min.js