Вступление #
Для работы слайдера можно использовать класс js-slider по умолчанию и специальную разметку.
Слайдер реализован на базе splide.js.
Установка #
Пример разметки и инициализации слайдера.
<div class="js-slider">
<div class="splide__track">
<div class="splide__list">
<div class="splide__slide">
<img src="../assets/images/demo/1.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/2.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/3.jpg"/>
</div>
</div>
</div>
</div>
// настройки Splide.js(https://splidejs.com/guides/options/#options)
const options = {
type: 'slide',
trimSpace: 'move',
rewind: false,
waitForTransition: true,
perPage: 3,
perMove: 3,
arrows: false,
};
BasicSlider.init('.my-slider', options);
BasicSlider.init(document.querySelector('.my-slider'), options);
BasicSlider.init(document.querySelectorAll('.my-slider'), options);
// или
BasicSlider.init(); // по умолчанию инициaлизирует элементы с классом .js-slider
Конфигурация #
Настройки, заданные с использованием data-атрибутов.
data-slider-options #
В значениях указываются параметры для гибкой настройки слайдера, с ними можно ознакомиться на странице официальной документации splide.js.
<div
class="js-slider"
data-slider-options='{
"type": "fade",
"trimSpace": false,
"arrows": false,
"pagination": false
}'
>
<div class="splide__track">
<div class="splide__list">
<div class="splide__slide">
<img src="../assets/images/demo/1.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/2.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/3.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/4.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/5.jpg"/>
</div>
</div>
</div>
</div>
data-slider-classes #
Отдельный data-атрибут для настройки классов элементов слайдера.
Принимает следующие значения:
| Название | Описание |
|---|---|
arrows |
родительский контейнер стрелок |
arrow |
триггеры стрелок |
prev |
стрелка "Назад" |
next |
стрелка "Вперёд" |
pagination |
родительский контейнер пагинации |
page |
триггеры пагинации |
<div
class="js-slider"
data-slider-classes='{
"arrows": "my-slider-arrows",
"arrow": "my-slider-arrow",
"prev": "my-slider-arrow--prev",
"next": "my-slider-arrow--next",
"pagination": "my-slider-pagination",
"page": "my-slider-page"
}'
>
<div class="splide__track">
<div class="splide__list">
<div class="splide__slide">
<img src="../assets/images/demo/1.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/2.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/3.jpg"/>
</div>
</div>
</div>
</div>
data-slider-padding #
Отдельный data-атрибут для настройки внутренних отступов.
Принимает следующие значения:
| Название | Описание |
|---|---|
top |
padding-top |
right |
padding-right |
bottom |
padding-bottom |
left |
padding-left |
<div
class="js-slider"
data-slider-padding='{
"top": "0px",
"right": "50px",
"bottom": "0px"
"left": "50px",
}'
>
<div class="splide__track">
<div class="splide__list">
<div class="splide__slide">
<img src="../assets/images/demo/1.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/2.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/3.jpg"/>
</div>
</div>
</div>
</div>
data-slider-breakpoints #
Отдельный data-атрибут для настройки адаптивного режима.
<div
class="js-slider"
data-slider-breakpoints='{
"768": {
"arrows": false
},
"480": {
"arrows": false,
"gap": "20px",
"padding": {
"left": "50px",
"right": "50px"
}
}
}'
>
<div class="splide__track">
<div class="splide__list">
<div class="splide__slide">
<img src="../assets/images/demo/1.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/2.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/3.jpg"/>
</div>
</div>
</div>
</div>
data-slider-mounted-callback #
Отдельный data-атрибут, который отвечает за callback и вызывается после инициализации слайдера.
<div
class="js-slider"
data-slider-mounted-callback="console.log('Это скрипт запустится, когда будет инициализирован слайдер')"
>
<div class="splide__track">
<div class="splide__list">
<div class="splide__slide">
<img src="../assets/images/demo/1.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/2.jpg"/>
</div>
<div class="splide__slide">
<img src="../assets/images/demo/3.jpg"/>
</div>
</div>
</div>
</div>
Слайдер с миниатюрами #
Для инициализации и настройки миниатюр необходимо использовать специальные data-атрибуты.
data-slider-thumbs #
Отдельный data-атрибут для инициализации миниатюр.
<div
class="js-slider"
data-slider-thumbs="true"
>
<div class="splide__track">
<div class="splide__list">
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/1.jpg"
>
<img src="../assets/images/demo/1.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/2.jpg"
>
<img src="../assets/images/demo/2.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/3.jpg"
>
<img src="../assets/images/demo/3.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/4.jpg"
>
<img src="../assets/images/demo/4.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/5.jpg"
>
<img src="../assets/images/demo/5.jpg"/>
</div>
</div>
</div>
</div>
data-thumbs-options #
В значениях указываются параметры для гибкой настройки миниатюр, с ними можно ознакомиться на странице официальной документации splide.js.
<div
class="js-slider"
data-slider-thumbs="true"
data-thumbs-options='{
"arrows": true,
"breakpoints": {
"480": {
"arrows": false
}
}
}'
>
<div class="splide__track">
<div class="splide__list">
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/1.jpg"
>
<img src="../assets/images/demo/1.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/2.jpg"
>
<img src="../assets/images/demo/2.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/3.jpg"
>
<img src="../assets/images/demo/3.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/4.jpg"
>
<img src="../assets/images/demo/4.jpg"/>
</div>
<div
class="splide__slide"
data-slider-thumb="../assets/images/demo/5.jpg"
>
<img src="../assets/images/demo/5.jpg"/>
</div>
</div>
</div>
</div>
Экземпляр #
У каждого инициализированного элемента есть свой экземпляр.
const mySlider = document.querySelector(".my-slider");
console.log(mySlider.BasicSlider); // пример экземпляра
Прослушивание событий #
Прослушивания событий реализовано на базе Splide#on(), с ними можно ознакомиться тут: список событий.
BasicSlider.on('.my-slider', {
event: 'active', // событие
listener: (event) => {
console.log(event);
// слушатель события
}
});

