Слайкслайдер (нескользящий) отзывчивый

В настоящее время используется Slick Slider на сайте WordPress.

У меня есть слайдер, который имеет максимум 3 столбца, на весь экран - 1024px плюс. На экране размером менее 1024 пикселей слайдер демонстрирует 2 столбца, а на мобильном устройстве - 1 столбец.

Я построил этот слайдер динамически - поэтому в их возможностях будут периоды, не все столбцы будут заполнены. то есть на экране "1024px плюс" пользователь может загружать ресурсы только для двух слайдов, внутри слайдера, а не для трех и т. д.

Проблема, с которой я сталкиваюсь, заключается в попытке сделать мой слайдер плавным, например, если пользователь загружает только 1 или 2 слайда - в пределах слайдера эти слайды не заполняют весь экран. Я попытался использовать "unlick" мои настройки для первого объекта. Если я не пропущен в документации, я не могу найти ничего подходящего

Вот фрагмент моего кода:

$(slider).slick({
autoplay: true,
autoplaySpeed: 800,
slidesToShow: 3,
slidesToScroll: 3,
speed: 800,
responsive: [
    {
        breakpoint: 1024,
        settings: {
            slidesToShow: 3,
            slidesToScroll: 3,
            infinite: true,
            dots: true
        }
    },
    {
        breakpoint: 980,
        settings: {
            slidesToShow: 2,
            slidesToScroll: 2,
            prevArrow: false,
            nextArrow: false
        }
    },
 }

1 ответ

В настоящее время нет возможности скользить или не скользить слайдер в зависимости от количества слайдов. Но вы можете обмануть его, выбрав количество слайдов и инициализируя слайдер в зависимости от этого количества.

// your Slick element
var slider = $('.your-selector');

// slides amount
// it will take the maximum number of slides or 1 in case the slider is empty
var slides = Math.max(1, slider.children('.your-slide-selector').length);

// slick initialization
// for each slidesToShow and slidesToScroll use Math.min so it will take the minimim amount between the slides amount and the defined slides for the breakpoint
$(slider).slick({
    autoplay: true,
    autoplaySpeed: 800,
    slidesToShow: Math.min(3, slides),
    slidesToScroll: Math.min(3, slides),
    speed: 800,
    responsive: [
        {
            breakpoint: 1024,
            settings: {
                slidesToShow: Math.min(3, slides),
                slidesToScroll: Math.min(3, slides),
                infinite: true,
                dots: true
            }
        },
        {
            breakpoint: 980,
            settings: {
                slidesToShow: Math.min(2, slides),
                slidesToScroll: Math.min(2, slides),
                prevArrow: false,
                nextArrow: false
            }
        }
    ]
});

Я не проверял отзывчивость самого слайдера. Скрипт просто устанавливает slidesToShow а также slidesToScroll к определенному значению, или в случае, если количество слайдов меньше, чем определяет слайды, устанавливает значения на количество слайдов.

Надеюсь, поможет.

Другие вопросы по тегам