JSFiddle - React, Tailwind, and code Playground
HTML
<div class="gallery-box">
<div class="view">
<div class="big-image"><img src="http://coderpro.ru/images/images/img11.jpg" alt="image11"></div>
<a href="#" class="prev"></a>
<a href="#" class="next"></a>
</div>
<div class="thumbnails">
<a href="http://coderpro.ru/images/images/img11.jpg" class="active">
<img src="http://coderpro.ru/images/images/img11.jpg" alt="image11"></a>
<a href="http://coderpro.ru/images/images/img12.jpg"><img src="http://coderpro.ru/images/images/img12.jpg" alt="image12"></a>
<a href="http://coderpro.ru/images/images/img13.jpg"><img src="http://coderpro.ru/images/images/img13.jpg" alt="image13"></a>
<a href="http://coderpro.ru/images/images/img14.jpg"><img src="http://coderpro.ru/images/images/img14.jpg" alt="image14"></a>
</div>
</div>
<div class="gallery-box">
<div class="view">
<div class="big-image"><img src="http://xsaxs.ru/wall/30/megapolis_vecher_neboskreby_tuman_prev.jpg" alt="image11"></div>
<a href="#" class="prev"></a>
<a href="#" class="next"></a>
</div>
<div class="thumbnails">
<a href="http://xsaxs.ru/wall/30/megapolis_vecher_neboskreby_tuman_prev.jpg" class="active">
<img src="http://xsaxs.ru/wall/30/megapolis_vecher_neboskreby_tuman_prev.jpg" alt="image11"></a>
<a href="http://www.desktophdwallpapers.eu/thumbs/hong-kong-t2.jpg"><img src="http://www.desktophdwallpapers.eu/thumbs/hong-kong-t2.jpg" alt="image12"></a>
<a href="http://www.kartinki.me/mini/201209/7562.jpg"><img src="http://www.kartinki.me/mini/201209/7562.jpg" alt="image13"></a>
<a href="https://im2-tub-ru.yandex.net/i?id=f089c3a82a9415434bf21a96b70fce5d&n=33&h=170"><img src="https://im2-tub-ru.yandex.net/i?id=f089c3a82a9415434bf21a96b70fce5d&n=33&h=170" alt="image14"></a>
</div>
</div>
CSS
.gallery-box{
width:600px;
padding:25px 0 0;
margin:0 auto;
}
.view{
position:relative;
margin:0 0 5px;
}
.big-image img{
display:block;
width:300px;
height:150px;
}
.prev, .next{
position:absolute;
width:40px;
height:40px;
}
.prev{
bottom:20px;
left:20px;
background:url(http://coderpro.ru/images/images/controls.png) no-repeat 0 0;
}
.next{
bottom:20px;
left:250px;
background:url(http://coderpro.ru/images/images/controls.png) no-repeat -48px 0;
}
.thumbnails{
width:605px;
}
.thumbnails a{
float:left;
margin:0 5px 0 0;
}
.thumbnails a img{
width:70px;
height:39px;
border: 2px solid transparent;
display:block;
}
.thumbnails .active img{
border-color:#069;
}
JavaScript
$(function(){
$('.thumbnails a').click(function(){ // При нажатиина миниатюру
var images = $(this).find('img');
var imgSrc = images.attr('src');
$(".big-image img").attr({ src: imgSrc }); // Подменяем адрес большого изображения на адрес выбранного
$(this).siblings('a').removeClass('active'); // Удаляем класс .active со ссылки чтоб убрать рамку
images.parent().addClass('active'); // Добавляем класс .active на выбранную миниатюру
return false;
});
$('.next').click(function(){ // При нажатии на кнопку "вперед"
var count = $('.thumbnails a').length; // Общее количество изображений
var n = parseInt($('.thumbnails a').index($('.active')) + 1); // Порядковый номер текущего изображения
var activeImg = $('.thumbnails .active'); // Активное на данный момент изображение
var nextSrc;
if (count != n){ // - Если изображение не последнее
nextSrc = activeImg.next().find('img').attr('src'); // В переменную записывается адрес следующего изображения
$('.thumbnails .active').removeClass('active'); // Удаляется класс .active с предыдущей миниатюры
activeImg.next().addClass('active'); // На миниатюру следующего изображения вешается класс .active
}else{ // - Если текущее изображение последнее в списке
nextSrc = $('.thumbnails a').first().find('img').attr('src'); // В переменную записывается адрес первого изображения
$('.thumbnails .active').removeClass('active'); // Удаляется класс .active с предыдущей миниатюры
$('.thumbnails a').first().addClass('active'); // На первую миниатюру вешается...