Snake, альтернатива Slick slider на чистом JavaScript

05d2676fcfb9ac3c2cd8d7d1c8c9a403.jpg

Для создания современных сайтов разработчики все чаще стали пользоваться реактивными фреймворками или чистым JavaScript, отказываясь при этом от библиотеки jQuery. Однако остаются плагины, от которых не так просто отказаться. К таким относится Slick slider. Он очень удобен в использовании и сочетает в себе все необходимые для создания каруселей опции. Сегодня хочу рассказать о слайдере Snake, который очень похож на Slick по своей функциональности, но не имеет сторонних зависимостей и, соответственно, не требует подключения jQuery. Мы поговорим о том, какие у слайдера есть плюсы и минусы, рассмотрим, как им пользоваться, а также познакомимся с опциями Snake.

Для тех, кто не хочет читать вест текст, оговорюсь, что полный список настроек, демо и ссылка на код на GitHub есть в конце статьи.

Плюсы и минусы Snake

Итак, из достоинств Snakeстоит отметить следующие:

  • Как уже было сказано, карусель написана на чистом JS и не имеет сторонних зависимостей.

  • Уже знакомый функционал: опции называются так же, как у Slick.

  • Реализована основная функциональность Slick: адаптивность, отдельные настройки под каждый брейкпоинт, бесконечная прокрутка, навигация и возможность синхронизации слайдеров.

  • Лаконичный код инициализации: создавая инстанс Snake, передаем селектор по аналогии с плагинами jQuery.

  • Простое подключение — добавляем стили и скрипт, и карусель готова к работе.

  • Сайт слайдера визуально похож на сайт Slick, там будет комфортно ориентироваться.

    Что касается недостатков,

  • в Snake реализованы не все возможности Slick, а лишь основные.

  • Нет подробной документации.

    Последнюю проблему мы постараемся решить, рассмотрев опции Snake в этой статье.

Начало работы со слайдером

А сейчас давайте посмотрим, как начать работу со слайдером. Для этого необходимо скачать код Snake по ссылке и перенести папку snake в ваш проект. После этого в тэге head подключаем стили и js-файл.



Затем прописываем HTML-разметку карусели:

slide 1
slide 2
slide 3

И в файле script.js инициализируем Snake:

new Snake('.some-class');

В целом должно получиться следующее.

Файл index.html


    
        Page Title
        
        
        
        
    
    
        
slide 1
slide 2
slide 3

Файл script.js

window.addEventListener('load', () => {
    new Snake('.some-class');
});

Настройка Snake

А теперь давайте попробуем создать адаптивную карусель с помощью Snake. Передадим при инициализации слайдера объект с настройками в формате {option: value, option: value}. Добавим несколько слайдов в HTML:

new Snake('.some-class', {
    mobileFirst: true,
    swipe: true,
    speed: 300,
    dots: true,
    slidesToShow: 2,
    slidesToScroll: 1,
    infinite: false,
    arrows: false,
    responsive: [
        {
            breakpoint: 800,
            settings: {
                slidesToShow: 4,
                slidesToScroll: 3,
                arrows: true,
                dots: false,
                infinite: true,
            }
        },
        {
            breakpoint: 1200,
            settings: {
                slidesToShow: 5,
                slidesToScroll: 2,
                arrows: true,
                infinite: true,
                centerMode: true,
            }
        },
    ],
});

В результате получится карусель с двумя слайдами на маленьких разрешениях.

f6aa3130482cf73f4bc907decd4845b3.png

При увеличении размеров окна браузера до 800 px слайдов станет 4, появится навигация в виде стрелок, карусель станет замкнутой, точки пропадут.

c2e7665b583968dda0d7e8b9bd1501a6.png

Все это благодаря следующему коду:

responsive: [
    {
        breakpoint: 800,
        settings: {
            slidesToShow: 4,
            slidesToScroll: 3,
            arrows: true,
            dots: false,
            infinite: true,
        }
    },
//...
]

Если увеличить размеры окна до 1200 px, слайдов станет 5, причем активный слайд будет располагаться по центру — это настройка centerMode, равная true.

9d54c9f702f0bbad91837a70e649d705.png

На этом, я думаю, стало понятно, как подключить карусель и настроить ее. И, как обещала, вот все опции Snake c описанием.

Опции Snake

Название

Значение по умолчанию

Описание

adaptiveHeight

false

boolean, устанавливает варьируемую высоту слайдера при разной высоте контента слайдов

autoplay

false

boolean, автопрокрутка

autoplaySpeed

1000

int, количество миллисекунд до следующей автоматической прокрутки

arrows

true

boolean, отображать стрелки

asNavFor

null

string, селектор слайдера, для которого данный слайдер будет служить навигацией

prevArrow

''

string, HTML кнопки «Назад»

nextArrow

''

string, HTML кнопки «Вперед»

centerMode

false

boolean, активный слайд по центру

centerPadding

'0 px'

string, отступы справа и слева у отцентрированного с помощью centerMode слайдера

dots

true

boolean, навигация в виде точек

draggable

true

boolean, прокрутка с помощью мыши

focusOnSelect

false

boolean, прокрутка к слайду при клике на него

infinite

true

boolean, бесконечная прокрутка

initialSlide

1

number, первый слайд

mobileFirst

false

boolean, начинать отсчет брейкпоинтов в массиве responsive c меньшего значения breakpoint

pauseOnHover

true

boolean, останавливать автопрокрутку при наведении на слайды

responsive

null

array, массив объектов с настройками для разных брейкпоинтов

slidesToShow

1

number, количество отображаемых слайдов

slidesToScroll

1

number, количество слайдов, на которое возможно пролистнуть слайдер

speed

500

number, скорость анимации пролистывания слайдера

swipe

true

boolean, прокрутка при свайпе

Демо и Gitgub

Демо: http://hjolda.ru/

GitHub: https://github.com/hjolda/sna

© Habrahabr.ru