Как можно перейти на нужный слайд при нажатии на изображение в слайдере Slick?

Здравствуйте! У меня есть Slick-слайдер с тремя основными слайдами, и мне нужно реализовать функционал, при котором по клику на три маленькие фотографии под слайдером будет происходить перелистка на соответствующие слайды с большими изображениями. Как можно сделать так, чтобы эти миниатюры функционировали как дотсы и переключали слайды?
  • 6 декабря 2024 г. 19:23
Ответы на вопрос 2
Для того чтобы реализовать функционал переключения слайдов при нажатии на миниатюры в Slick-слайдере, вам нужно использовать метод `slickGoTo` библиотеки Slick. Вот шаги, которые нужно выполнить:

### Шаги по внедрению

1. **Создайте HTML-структуру** для слайдера и миниатюр. Пример:

```html
<div class="slick-slider">
  <div><img src="large1.jpg" alt="Slide 1"></div>
  <div><img src="large2.jpg" alt="Slide 2"></div>
  <div><img src="large3.jpg" alt="Slide 3"></div>
</div>

<div class="thumbnail-slider">
  <img src="thumb1.jpg" alt="Thumbnail 1" data-slide="0">
  <img src="thumb2.jpg" alt="Thumbnail 2" data-slide="1">
  <img src="thumb3.jpg" alt="Thumbnail 3" data-slide="2">
</div>
```

2. **Инициализируйте Slick-слайдер** на основном слайдере. Например:

```javascript
$(document).ready(function(){
  $('.slick-slider').slick({
    // ваши настройки слайдера
  });
});
```

3. **Добавьте обработчик событий** на миниатюры, чтобы переключать слайды:

```javascript
$('.thumbnail-slider img').on('click', function() {
  var slideIndex = $(this).data('slide'); // Получаем индекс слайда из атрибута data-slide
  $('.slick-slider').slick('slickGoTo', slideIndex); // Переключаем на нужный слайд
});
```

### Полный пример кода

Вот как может выглядеть ваш конечный код:

```html
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css">
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>
  <title>Slick Slider Example</title>
</head>
<body>

<div class="slick-slider">
  <div><img src="large1.jpg" alt="Slide 1"></div>
  <div><img src="large2.jpg" alt="Slide 2"></div>
  <div><img src="large3.jpg" alt="Slide 3"></div>
</div>

<div class="thumbnail-slider">
  <img src="thumb1.jpg" alt="Thumbnail 1" data-slide="0">
  <img src="thumb2.jpg" alt="Thumbnail 2" data-slide="1">
  <img src="thumb3.jpg" alt="Thumbnail 3" data-slide="2">
</div>

<script>
$(document).ready(function(){
  $('.slick-slider').slick({
    // ваши настройки слайдера
  });

  $('.thumbnail-slider img').on('click', function() {
    var slideIndex = $(this).data('slide');
    $('.slick-slider').slick('slickGoTo', slideIndex);
  });
});
</script>

</body>
</html>
```

### Заключение

Теперь при нажатии на миниатюры будет происходить переключение на соответствующие слайды в основном слайдере. Используйте атрибут `data-slide` для указания индекса слайда, чтобы легко управлять этим поведением.
Может кому пригодится, получилось реализовать переход по слайдам с помощью метода "slickGoTo", на нужные элементы, по клику на которые должен листаться слайдер, надо повесить атрибуты data-slick-index="0", data-slick-index="1", data-slick-index="2" и т.д. Обратите внимание, что нумерация слайдов начинается с 0 

$(".go-item").on("click", function() {
  const index = $(this).attr("data-slick-index");
  $(".slider_wrapper").slick("slickGoTo", index);
});
Похожие вопросы