Вступление #

Для работы слайдера можно использовать класс 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)
		// слушатель события
	},
})