Один из популярнейших слайдеров на Jquery является Slick Slider . И это не мудрено, так как данный плагин умеет очень много. В большинстве случаев вы будите использовать общепринятые модели слайдера, но давайте взглянем на, что способен данный плагин. А способен о на многое. Для начала подключаем файлы стилей к нашему проекту, я буду в примере использовать файлы из CDN вы можете скачать дистрибудив слайдера Slick с офф. сайта или с Github https://github.com/kenwheeler/slick/
<!-- Добавляем стили из CDN -->
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.9.0/slick/slick.css"/>
<!-- Добавляем тему по умолчанию из CDN -->
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.9.0/slick/slick-theme.css"/>
Данный код должен быть в самом конце, перед закрывающим тегом
</body>
<script type="text/javascript" src="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.9.0/slick/slick.min.js"></script>
Список возможностей использования Slick Slider
- Одиночный слайд
- Несколько слайдов
- Адаптивный слайдер
- Различная ширина слайдов
- Различная высота слайдов
- Настройка с Data атрибутом
- Режим центрирования слайда
- Ленивая загрузка
- Автоматическая прокрутка
- Смена слайдов размытием Fade
- Добавление и удаление слайдов
- Фильтрация слайдов
- Уничтожить объект
- Синхронизация слайдеров
- Справа налево
- Насторйки
- События
- Методы
//Иницилизируем слайдер с параметрами по умолчанию
$('.single-item').slick();
//Указываем что будем выводить по 3 слайда на экран
$('.multiple-items').slick({
infinite: true,
slidesToShow: 3,
slidesToScroll: 3
});
//Настройки по выводу слайдов в зависимости от разрешения экрана
$('.responsive').slick({
dots: true,
infinite: false,
speed: 300,
slidesToShow: 4,
slidesToScroll: 4,
responsive: [
{
breakpoint: 1024,
settings: {
slidesToShow: 3,
slidesToScroll: 3,
infinite: true,
dots: true
}
},
{
breakpoint: 600,
settings: {
slidesToShow: 2,
slidesToScroll: 2
}
},
{
breakpoint: 480,
settings: {
slidesToShow: 1,
slidesToScroll: 1
}
}
]
});
$('.variable-width').slick({
dots: true,
infinite: true,
speed: 300,
slidesToShow: 1,
centerMode: true,
variableWidth: true
});
$('.one-time').slick({
dots: true,
infinite: true,
speed: 300,
slidesToShow: 1,
adaptiveHeight: true
});
Внимание:
Начиная с Slick 1.5 вы можете добавлять настройки, используя атрибут data-slick . Вам все еще нужно вызвать $(element).slick() , чтобы инициализировать Slick на элементе.
<div data-slick='{"slidesToShow": 4, "slidesToScroll": 4}'>
<div><h3>1</h3></div>
<div><h3>2</h3></div>
<div><h3>3</h3></div>
<div><h3>4</h3></div>
<div><h3>5</h3></div>
<div><h3>6</h3></div>
</div>
$('.center').slick({
centerMode: true,
centerPadding: '60px',
slidesToShow: 3,
responsive: [
{
breakpoint: 768,
settings: {
arrows: false,
centerMode: true,
centerPadding: '40px',
slidesToShow: 3
}
},
{
breakpoint: 480,
settings: {
arrows: false,
centerMode: true,
centerPadding: '40px',
slidesToShow: 1
}
}
]
});
// Используйте леневую загрузку устаноиви ее в data-lazy атрибудет
// В нем укажите источник к файлу в место SRC
<img data-lazy="img/lazyfonz1.png"/>
$('.lazy').slick({
lazyLoad: 'ondemand',
slidesToShow: 3,
slidesToScroll: 1
});
$('.autoplay').slick({
slidesToShow: 3,
slidesToScroll: 1,
autoplay: true,
autoplaySpeed: 2000,
});
$('.fade').slick({
dots: true,
infinite: true,
speed: 500,
fade: true,
cssEase: 'linear'
});
$('.add-remove').slick({
dots: true,
slidesToShow: 3,
speed: 500,
slidesToScroll: 3
});
var slideIndex = 1;
$('.js-add-slide').on('click', function() {
slideIndex++;
$('.add-remove').slick('slickAdd','<div><h3>' + slideIndex + '</h3></div>');
});
$('.js-remove-slide').on('click', function() {
$('.add-remove').slick('slickRemove',slideIndex - 1);
if (slideIndex !== 0){
slideIndex--;
}
});
$('.filtering').slick({
slidesToShow: 4,
slidesToScroll: 4
});
var filtered = false;
$('.js-filter').on('click', function(){
if (filtered === false) {
$('.filtering').slick('slickFilter',':even');
$(this).text('Unfilter Slides');
filtered = true;
} else {
$('.filtering').slick('slickUnfilter');
$(this).text('Filter Slides');
filtered = false;
}
});
Если ты действительно хочешь быть тем парнем ...
//Уничтожить объект слайдера
$('.your-slider').slick('unslick');
$('.slider-for').slick({
slidesToShow: 1,
slidesToScroll: 1,
arrows: false,
fade: true,
asNavFor: '.slider-nav'
});
$('.slider-nav').slick({
slidesToShow: 3,
slidesToScroll: 1,
asNavFor: '.slider-for',
dots: true,
centerMode: true,
focusOnSelect: true
});
$('.single-item-rtl').slick({
rtl: true
});
Setting | Type | Default | Description |
---|---|---|---|
accessibility | boolean | true | Включает вкладки и навигацию по клавишам со стрелками |
adaptiveHeight | boolean | false | Обеспечивает адаптивную высоту для односкатных горизонтальных каруселей. |
autoplay | boolean | false | Включает автоигру |
autoplaySpeed | Int (мс) | 3000 | Автоигра Скорость в миллисекундах |
arrows | boolean | true | Предыдущая / Следующая Стрелки |
asNavFor | string | ноль | Установите ползунок для навигации по другому ползунку (имя класса или идентификатора) |
appendArrows | string | $(element) | Изменить место прикрепления навигационных стрелок (Selector, htmlString, Array, Element, jQuery object) |
appendDots | string | $(element) | Изменить местоположение точек навигации (Selector, htmlString, Array, Element, object jQuery) |
prevArrow | string (html | jQuery селектор) | объект (узел DOM | объект jQuery) | <button type = "button" class = "slick-prev"> Предыдущая </ button> | Позволяет выбрать узел или настроить HTML-код для стрелки «Назад». |
nextArrow | string (html | jQuery селектор) | объект (узел DOM | объект jQuery) | <button type = "button" class = "slick-next"> Next </ button> | Позволяет выбрать узел или настроить HTML-код для стрелки «Далее». |
centerMode | boolean | false | Включает центрированный вид с частичными предыдущими / следующими слайдами. Используйте с нечетным номером слайдов ToShow. |
centerPadding | string | '50px' | Боковые отступы в центральном режиме (px или %) |
cssEase | string | 'ease' | CSS3 Animation Easing |
customPaging | function | n/a | Пользовательские шаблоны подкачки. Смотрите источник для примера использования. |
dots | boolean | false | Показать точечные индикаторы |
dotsClass | string | 'slick-dots' | Класс для контейнера точек индикатора слайда |
draggable | boolean | true | Включить перетаскивание мышью |
fade | boolean | false | Включить затухание |
focusOnSelect | boolean | false | Включить фокус на выбранный элемент (нажмите) |
easing | string | 'linear' | Добавьте ослабление для jQuery animate. Использовать с библиотеками замедления или методами по умолчанию |
edgeFriction | integer | 0,15 | Сопротивление при смахивании краев бесконечной карусели |
infinite | boolean | true | Бесконечный цикл скольжения |
initialSlide | integer | 0 | Слайд, чтобы начать |
LazyLoad | string | 'ondemand' | Установите ленивую технику загрузки. Принимает «по требованию» или «прогрессивный» |
mobileFirst | boolean | false | Адаптивные настройки используют мобильный первый расчет |
pauseOnFocus | boolean | true | Пауза автозапуска на фокусе |
pauseOnHover | boolean | true | Пауза автозапуска при наведении |
pauseOnDotsHover | boolean | false | Приостановка автозапуска при наведении точки |
respondTo | string | 'window' | Ширина, на которую реагирует реагирующий объект. Может быть «окно», «слайдер» или «мин» (меньшее из двух) |
responsive | object | none | Объект, содержащий точки останова и объекты настроек (см. Демонстрацию). Включает настройки для заданной ширины экрана. Установите настройки «unlick» вместо объекта, чтобы отключить slick в заданной точке останова. |
rows | int | 1 | Установка более 1 инициализирует режим сетки. Используйте slidesPerRow, чтобы установить, сколько слайдов должно быть в каждой строке. |
slide | element | '' | Элемент запроса для использования в качестве слайда |
slidesPerRow | int | 1 | С режимом сетки, инициализированным с помощью опции строк, это устанавливает, сколько слайдов в каждой строке сетки. Дверь |
slidesToShow | int | 1 | Количество слайдов для показа |
slidesToScroll | int | 1 | Количество слайдов для прокрутки |
speed | Int (мс) | 300 | Скорость анимации скольжения / затухания |
swipe | boolean | true | Включить смахивание |
swipeToSlide | boolean | false | Разрешить пользователям перетаскивать или проводить пальцем прямо к слайду независимо от слайдов ToScroll |
TouchMove | boolean | true | Включить движение слайдов одним касанием |
touchThreshold | int | 5 | Для продвижения слайдов пользователь должен провести пальцем по длине (1 / touchThreshold) * ширина слайдера |
useCSS | boolean | true | Включить / отключить CSS-переходы |
useTransform | boolean | true | Включить / отключить CSS-преобразования |
variableWidth | boolean | false | Слайды переменной ширины |
вертикальный | boolean | false | Режим вертикального скольжения |
verticalSwiping | boolean | false | Режим вертикальной прокрутки |
rtl | boolean | false | Измените направление ползунка, чтобы стать справа налево |
waitForAnimate | boolean | true | Игнорирует запросы на продвижение слайда во время анимации |
zIndex | number | 1000 | Установите значения zIndex для слайдов, полезно для IE9 и ниже |
Событие | Аргументы | Описание |
---|---|---|
afterChange | slick, currentSlide | Пожары после смены слайдов |
beforeChange | slick, текущий слайд, следующий слайд | Пожары перед сменой слайдов |
breakpoint | событие, slick, точка останова | Пожары после достижения точки останова. |
destroy | событие, slick | Когда слайдер уничтожен или не скользит. |
edge | slick, направление | Запускается, когда ребро прокручивается в бесконечном режиме. |
init | slick | Срабатывает после первой инициализации. |
reInit | slick | Срабатывает после каждой повторной инициализации |
SetPosition | slick | Пожары после изменения положения / размера |
swipe | slick, направление | Пожары после удара / перетаскивания |
lazyLoaded | событие, slick, изображение, imageSource | Срабатывает после загрузки изображения лениво |
lazyLoadError | событие, slick, изображение, imageSource | Срабатывает после того, как изображение не загружается |
Метод | Аргументы | Описание |
---|---|---|
slickCurrentSlide | none | Возвращает текущий индекс слайда |
slickGoTo | int: номер слайда, логическое значение: не анимировать | Переходит к слайду по индексу |
slickNext | none | Переходит к следующему слайду |
slickPrev | none | Переходит к предыдущему слайду |
slickPause | none | Паузы автовоспроизведения |
slickPlay | none | Запускает автозапуск |
slickAdd | HTML или DOM объект, индекс, addBefore | объект |
slickRemove | index, removeBefore | Если для removeBefore задано значение false, удалите указатель, следующий за слайдом, или последний слайд, если индекс не установлен. |
slickFilter | Селектор или функция | Фильтрует слайды, используя jQuery .filter () |
slickUnfilter | index | Удаляет примененную фильтрацию |
slickGetOption | опция: string | Получает индивидуальное значение параметра. |
slickSetOption | опция: string, значение: зависит от опции, refresh: логическое значение | Установите для параметра true значение true, если это обновление пользовательского интерфейса. |
unslick | none | Разрушает slick |
getSlick | none | Получить гладкий объект |
07/12/2021 18:18:26
Доброго времени суток.
Не уверен, что правильно понял ваш вопрос, но всеже... Что-то мне подсказывает, что вам подойдет событие beforeChange я не так давно о нем писал одному из читателей, попробуте его найти вот дата ответа 09/08/2021 19:42:25
Можете отслеживать смену слайда и выполнять вашу логику скрипта
07/12/2021 22:53:23
18/11/2021 13:42:15
Понял, что вам нужно. Используйте slickGoTo у меня в примере это сделано в виде ссылок, но я думаю сможете адаптировать для своих изображениях.
Естественно нужно понимать, что количество картинок или размещенных индексов должно быть в диапазоне количество слайдов.
Добавьте этот код применительно вашего слайдера, должен сработать как вам нужно.
$('a[data-slide]').click(function(e) {
e.preventDefault();
var slideno = $(this).data('slide');
//Тут селектор вашего слайдера
$('.slider').slick('slickGoTo', slideno - 1);
});
<div class="action">
<a href="#" data-slide="3">go to slide 3</a>
<a href="#" data-slide="4">go to slide 4</a>
<a href="#" data-slide="5">go to slide 5</a>
</div>
18/11/2021 17:20:03
18/11/2021 01:09:55
Доброго времени суток!
Если честно не совсем понял суть вашего вопроса. Может вы имели ввиду что-то типы сингхронизации слайдеров? https://bezramok-tlt.ru/blog/posts/slick-slider-ustanovka-nastrojka-primery-i-dokumentaciya#slider-for
Бывает другой вариант - в основном он используется в витринах интернет-магазина. Когда с верху находится изображение увеличеного размера, а под ним крутятся миниатюры в сладере и при клике на миниатюру данное фото со слайда подставляется в контенер для большой картинке.
18/11/2021 13:31:42
24/09/2021 03:38:26
$(document).ready(function(){
$('.content__slider').slick({
dots: true,
arrows: false,
});
$('.tabs').on('click', function (e) {
$(".content__slider").slick('reinit');
});
});
в таком варианте добавляется куча точек dots 22/09/2021 06:18:41
Доброго времени суток. Не знаю зачем Вам реинициализировать Slick Slider, но не суть.
Для того, чтобы слайдер работал корректно нужно сначала уничтожить текуoий объект Slick Slidera и вызвать новый с текущими или новыми параметрами.
//Уничтожаем текущий объект
$('.content__slider').slick('unslick');
В итоге код должен получиться таким:
//Если нажали на Tabs
$('.tabs').on('click', function (e) {
//Уничтожаем объект
$('.content__slider').slick('unslick');
//Инициализируем новый слайдер
$('.content__slider').slick({
arrows: true,
centerPadding: "0px",
dots: true,
slidesToShow: 3,
infinite: false
});
});
22/09/2021 09:28:50
13/08/2021 12:54:13
09/08/2021 19:42:25
Доброго времени суток!
У Slick Slider из коробки есть функционал, что если слайды закончились слева или справа и при этом не стоит, что бесконечная прокрутка, то стрелка становится тусклой и не активной. За это отвечает свойство infinite: false,
Теперь что касаемо вашей задачи, решения как минимум два!
1) Использовать стили CSS
<style type="text/css">.slick-disabled {
display: none;
}</style>
Но при таком раскладе данный код должен стоять после инициализации слайдера для корректной работы.
Правильней всего использовать события Event Slick Slider в нем можно отследить текущий слайд, сколько всего слайдов и имея эту информацию можно управлять кнопками. Вот пример кода:
$('#slider').slick({
dots: true,
infinite: false,
speed: 100,
slide: 'div',
cssEase: 'linear'
});
//По умолчанию стоит первый слайд, кнопку скрываем
if(currentSlide == 0)
$('.slick-prev').hide();
//Проверяем событие на перемещение слайта
$('#slider').on('beforeChange', function(event, slick, currentSlide, nextSlide){
//вычисляем какой следующий слад
if(nextSlide > 0)
$('.slick-prev').show();
if(nextSlide == 0)
$('.slick-prev').hide();
//Здесь высчитываем общее количество слайдов
//Так как отсчет от 0 то отнимаем 1 слайд
if(nextSlide == (slick.slideCount -1))
$('.slick-next').hide();
if(nextSlide < (slick.slideCount -1))
$('.slick-next').show();
});
09/08/2021 22:29:41