Как сделать карусель миниатюр на jquery?

162
14 января 2020, 17:00

Делаю галерею с миниатюрами

$(".show-image").click(function() { 
    event.preventDefault(); 
    var mainImage = $(this).index();  
    $('.images img').removeClass('active'); 
    $('.images img').eq(mainImage).addClass('active');  
});
.container {display: flex;} 
.images img {display: none; margin-right: 10px;} 
.images .active {display: block} 
.thumbs { position: relative; display: flex; flex-direction: column; flex-wrap: wrap;  width: 80px; height: 105px; overflow: hidden; } 
.thumbs a { display: inline-block; margin-right: 10px; } 
.prev, .next {position: absolute; top: 40px; } 
.next {position: absolute; right: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<div class="container"> 
  <div class="images"> 
    <img src="http://placehold.it/350x150?text=1" class="active"/> 
    <img src="http://placehold.it/350x150?text=2" /> 
    <img src="http://placehold.it/350x150?text=3" /> 
    <img src="http://placehold.it/350x150?text=4" /> 
    <img src="http://placehold.it/350x150?text=5" /> 
    <img src="http://placehold.it/350x150?text=6" /> 
    <img src="http://placehold.it/350x150?text=7" /> 
    <img src="http://placehold.it/350x150?text=8" />   
  </div> 
  <div class="thumbs"> 
    <a href="http://placehold.it/350x150?text=1" class="show-image"><img src="http://placehold.it/30x30?text=1"></a> 
    <a href="http://placehold.it/350x150?text=2" class="show-image"><img src="http://placehold.it/30x30?text=2"></a> 
    <a href="http://placehold.it/350x150?text=3" class="show-image"><img src="http://placehold.it/30x30?text=3"></a> 
    <a href="http://placehold.it/350x150?text=4" class="show-image"><img src="http://placehold.it/30x30?text=4"></a> 
    <a href="http://placehold.it/350x150?text=4" class="show-image"><img src="http://placehold.it/30x30?text=5"></a> 
    <a href="http://placehold.it/350x150?text=4" class="show-image"><img src="http://placehold.it/30x30?text=6"></a> 
    <a href="http://placehold.it/350x150?text=4" class="show-image"><img src="http://placehold.it/30x30?text=7"></a> 
    <a href="http://placehold.it/350x150?text=4" class="show-image"><img src="http://placehold.it/30x30?text=8"></a>  
    <button class="prev"> < </button> 
    <button class="next"> > </button> 
</div>

По умолчанию выводятся 6 миниатюр, остальные будут показываться при скролле влево. Как мне теперь сделать карусель миниатюр? Подключать сторонние плагины не хочу.

Answer 1

Рекомендую использовать Slick.js.

Но если хотите сделать свой собственный "велосипед", то клонируете n-1 миниатюр с конца и располагаете перед первой миниатюрой. И столько же миниатюр с начала - после последней. n - это количество видимых миниатюр - 6 в Вашем случае.

При прокрутке влево-вправо переключаете видимость миниатюр на -1/+1. При достижении начала/конца набора, включающего клоны - переключаетесь на конец/начало оригинального набора.

READ ALSO
не удалось запустить службу mysql ошибка 1067

не удалось запустить службу mysql ошибка 1067

не удалось запустить службу mysql ошибка 1067

150
PHP Warning: Illegal string offset

PHP Warning: Illegal string offset

После перемещения на другой хостинг ошибкиПомогите пожалуйста исправить

216
Не запускается служба MySQL

Не запускается служба MySQL

Служба MySQL80 сама остановилась и отказывается запускатьсяВ файле WIN-MUGGRCO16SH

202