Примеры бесплатных JQuery слайдеров для изображений. Простой адаптивный тач jQuery слайдер Слайдер с эффектом приближения
Это адаптивный тач слайдер, написанный на jQuery. В движке данного плагина используются CSS3 анимации, но в то же время, предусмотрены фолбэки для более старых версий браузеров. Glide.js прост и легковесен.
Использование 1. Подключаем jQueryЕдинственная зависимость плагина - это jQuery, который мы должны подключить в первую очередь:
2. Подключаем Glide.js
3. Добавляем html
Подключим базовые стили.
Накатаем html структуру слайдера.
4. Инициализация
Запускаем слайдер с настройками по умолчанию...
$(".slider").glide();
… или настраиваем его под себя
$(".slider").glide({ autoplay: 5000, arrows: "body", nav: "body" });
НастройкиСписок доступных параметров:
Параметр | Значение по умолчанию | Тип | Описание |
autoplay | 4000 | int/bool | Автопрокрутка (false для отключения) |
hoverpause | true | bool | Приостанавливать автопрокрутку при наведении мыши на слайдер |
animationTime | 500 | int | !!! Данная опция работает, если браузер НЕ поддерживает css3. Если css3 поддерживается браузером, то данный параметр нужно изменить в.css файле!!! |
arrows | true | bool/string | Показать/скрыть/прикрепить стрелки. True для отображения стрелок в контейнере слайдера. False для скрытия. Так же можете указать название класса (пример: ".class-name") для прикрепления особого html кода |
arrowsWrapperClass | slider-arrows | string | Класс, который присвоится контейнеру с стрелками |
arrowMainClass | slider-arrow | string | Основной класс для всех стрелок |
arrowRightClass | slider-arrow--right | string | Класс для правой стрелки |
arrowLeftClass | slider-arrow--left | string | Класс для левой стрелки |
arrowRightText | next | string | Текст для правой стрелки |
arrowLeftText | prev | string | Текст для левой стрелки |
nav | true | bool/string | Показать/скрыть/прикрепить навигацию по слайду. True для отображения. False для скрытия |
navCenter | true | bool | Навигация по центу |
navClass | slider-nav | string | Класс для контейнера навигации |
navItemClass | slider-nav__item | string | Класс для элемента навигации |
navCurrentItemClass | slider-nav__item--current | string | Класс для текущего элемента навигации |
keyboard | true | bool | Прокручивать слайд при нажатии на кнопки налево/направо |
touchDistance | 60 | int/bool | Поддержка прикосновения (тач). False для отключения данной возможности. |
beforeInit | function(){} | function | Колбэк, который запустится перед инициализацией плагина |
afterInit | function(){} | function | Колбэк, который запустится после инициализацией плагина |
beforeTransition | function(){} | function | Колбэк, который запустится перед прокруткой слайдера |
afterTransition | function(){} | function | Колбэк, который запустится после прокрутки слайдера |
Для использования API, запишите glide в переменную.
Var glide = $(".slider").glide().data("api_glide");
Теперь вам доступны API методы.
Glide.jump(3, console.log("Wooo!"));
- .current() - Возврат номера текущего сайда
- .play() - Начать автопрокрутку
- .pause() - Остановить автопрокрутку
- .next(callback) - Пролистнуть слайдер вперёд
- .prev(callback) - Пролистнуть слайдер назад
- .jump(distance, callback) - Переключиться на определённый слайд
- .nav(target) - Прикрепить навигацию к определённому элементу (к примеру: "body", ".class", "#id")
- .arrows(target) - Прикрепить стрелки к определённому элементу (к примеру: "body", ".class", "#id")
Здравствуйте, дорогие читатели блога. Сегодня представляю Вам полезную подборку бесплатных JQuery слайдеров с примерами . Если Вы всё таки надумали поставить слайдер изображений на свой ресурс, эта подборка Вам очень пригодится, и, поверьте, вам есть с чего выбрать. Тем более все слайдеры с примерами, и каждый из них Вы сможете попробовать в действии. В общем не буду отвлекать, выбирайте:-)
Простой JQuery слайдер изображенийСамый обычный и не большой слайдер миниатюр на Вашем сайте.
Слайдер с миниатюрами на JQueryОчень простой и интересный слайдер с миниатюрами, который подойдёт практически для любого дизайна.
Красивый слайдер для сайтаБольшой и очень красивый слайдер изображений, с интересным перелистыванием текста.
Обычный JQuery слайдерСамый обычный и простой слайдер на Ваш ресурс
Большой слайдер с описаниемЭффектный слайдер мимо которого нереально пройти.
JQuery слайдер картинок и описаниемПостой и стильный слайдер текста с изображениями и с красивым эффектом перелистывания.
Скроллинг изображений с подсказкамиИнтересный скроллинг изображений, который непрерывно и плавно прокручивается. По умолчанию стоят изображения разных фруктов, которые можно изменить на свои.
JQuery слайдер с большими стрелкамиИнтересный слайдер с большими розовыми стрелками, которые меняют размер за счёт увеличения изображения.
Вы пытаетесь показать пользователям столько, сколько максимально вы можете, но вы хотите донести эту информацию организованным и чистым способом. Поэтому мы создали для вас готовый к использованию слайдер jQuery с некоторыми встроенными опциями, такими как фон видео / изображений и различные выравнивания текста. В попытке увеличить взаимодействие с пользователем мы заменили «навигационные стрелки» на кнопки. Разница заключается в следующем: кнопки имеют заголовок, подсказку о том, какой контент ожидать. Стрелки просто говорят пользователям «вы можете переключать слайд».
Создание структурыHTML структурирован в 2 основных элемента: неупорядоченный список ul.cd-hero-slider , содержащий слайды, и div.cd-slider-nav , содержащий навигацию ползунка и маркер span.cd (используемый для создания Маркер выбранного элемента в навигации).
- Intro
- Tech 1
Добавление стиля
Структура слайдера довольно проста: все слайды переведены вправо, вне окна просмотра translateX (100%) ; Выбранный класс добавляется в видимый слайд, чтобы переместить его обратно в окно просмотра translateX (0) , а класс.move-left используется для перевода слайда влево translateX (-100%) .
Для достижения гладкой анимации мы использовали переходы CSS3, применяемые к элементу.selected и.is-moving: при выборе нового слайда класс.is-moving присваивается слайду, движущемуся за пределами области просмотра, в то время как выбранный Класс присваивается выбранному слайду.
Cd-hero-slider li { position: absolute; top: 0; left: 0; width: 100%; height: 100%; transform: translateX(100%); } .cd-hero-slider li.selected { /* this is the visible slide */ position: relative; transform: translateX(0); } .cd-hero-slider li.move-left { /* slide hidden on the left */ transform: translateX(-100%); } .cd-hero-slider li.is-moving, .cd-hero-slider li.selected { /* the is-moving class is assigned to the slide which is moving outside the viewport */ transition: transform 0.5s; }
О одиночной анимации слайдов: на больших устройствах (ширина видового экрана более 768 пикселей) мы решили оживить эффект входа, оживляя отдельные слайдовые элементы.cd-half-width и.cd-full-width , изменяя их непрозрачность и Преобразовать свойства.
Классы.from-left и.from-right используются для определения того, входит ли выбранный слайд в область просмотра слева или справа, чтобы запускать другую анимацию в соответствии с направлением входа. Чтобы этот эффект работал правильно, мы использовали другое значение задержки анимации для каждого анимированного элемента.
Для элементов.cd-half-width , например:
@media only screen and (min-width: 768px) {
.cd-hero-slider .cd-half-width {
opacity: 0;
transform: translateX(40px);
}
.cd-hero-slider .move-left .cd-half-width {
transform: translateX(-40px);
}
.cd-hero-slider .selected .cd-half-width {
/* this is the visible slide */
opacity: 1;
transform: translateX(0);
}
.cd-hero-slider .is-moving .cd-half-width {
/* this is the slide moving outside the viewport
wait for the end of the transition on the
transition: opacity 0s 0.5s, transform 0s 0.5s;
}
.cd-hero-slider li.selected.from-left .cd-half-width:nth-of-type(2),
.cd-hero-slider li.selected.from-right .cd-half-width:first-of-type {
transition: opacity 0.4s 0.2s, transform 0.5s 0.2s;
}
.cd-hero-slider li.selected.from-left .cd-half-width:first-of-type,
.cd-hero-slider li.selected.from-right .cd-half-width:nth-of-type(2) {
/* this is the selected slide - different animation if it"s entering from left or right */
transition: opacity 0.4s 0.4s, transform 0.5s 0.4s;
}
} Обработка событий
Видео, используемое в качестве фона для одного из слайдов, не вставлено непосредственно в HTML, а загружается, только если ширина устройства больше 768 пикселей; Таким образом, видео не будет загружено на мобильные устройства. Видеоданные выбранного слайда используются для извлечения видеоролика. Вы можете сделать то же самое для элементов внутри контейнера.cd-img (который скрыт на мобильных устройствах).
Кроме того, мы использовали jQuery для реализации функциональности слайд-шоу: когда пользователь щелкает один из элементов списка вкладки.cd-slider-nav , мы обнаруживаем позицию выбранного элемента (используя функцию index ()) и обновляем слайдер (Используя функции nextSlide () или prevSlide () в соответствии с этой позицией) и положение span.cd-marker .
$(".cd-slider-nav li").on("click", function(event){ event.preventDefault(); var selectedItem = $(this); if(!selectedItem.hasClass("selected")) { // if it"s not already selected var selectedPosition = selectedItem.index(), activePosition = $(".cd-hero-slider .selected").index(); if(activePosition
Примечание!Если вы хотите анимировать слайдер автоматически, добавьте класс.autoplay в элемент ul.cd-hero-slider .
SliderPro - адаптивный jQuery слайдер c поддержкой миниатюр и другими настройками, включая также и собственное API.
- Слайдер по умолчанию подстраивается под размеры экрана. Масштабироваться будут не только изображения, но и слои с вашим дополнительным контентом.
- Поддержка touch-swipe событий для сенсорных экранов. Использование Breakpoints - аналог CSS media queries, для изменения настроек слайдера на различных размерах экрана.
- Плавная анимация с помощью css3 transitions, анимация слоев, fade эффект для смены слайдов.
- Слайдер может быть на всю ширину страницы, на весь экран или располагаться внутри контейнера.
- Автоизменение высоты слайда. Ориентация превьюшек может быть, как вертикальная, так и горизонтальная.
- Для изображений поддерживается lazy loading, retina, возможность подгружать различные изображения под конкретные размеры экранов.
- Поддержка видео, интеграция с lightbox, навигация стрелками, точками, клавиатурой, миниатюрами и многое, многое другое.
Подключаем файл стилей:
HTML
Пример разметки для вставки слайдера:
Lorem ipsum dolor sit amet
Lorem ipsum dolor sit ametconsectetur adipisicing elit
JSПодключаем необходимые скрипты:
Выполняем инициализацию плагина:
jQuery(document).ready(function($) { $("#my-slider").sliderPro(); });
Более подробно о слайдере и его использовании можно найти на гитхабе. Ссылка ниже.
В этой статье разберём как можно очень просто с помощью CSS Flexbox и CSS трансформаций создать адаптивный слайдер для сайта.
Исходные коды и демо слайдераПроект слайдера под названием chiefSlider расположен на GitHub. Перейти на него можно по этой ссылке .
Слайдер с одним активным слайдом (без зацикливания):
Слайдер с тремя активными слайдами (без зацикливания):
Пример, в котором показан как можно применить слайдер для ротации статей:
Преимущества слайдера chiefSlider
Перечислим основные преимущества данного слайдера:
- во-первых, он не создаёт клоны элементов (item) для организации зацикливания, как это реализовано, например, в плагинах OwlCarousel и slick ;
- во-вторых, он не зависит от библиотеки jQuery ; это не только убирает дополнительные требования, но и делает его более лёгким;
- в-третьих, он практически не вносит никакие изменения в DOM документа ; единственное, что он делает - это добавляет или изменяет значения CSS трансформаций у элементов слайдера;
- в-четвертых, он содержит только минимальный набор функций ; дополнительный функционал можно добавить в зависимости от задачи;
- в-пятых, он является адаптивным , т.е. его можно использовать на любых сайтах; адаптивность слайдера настраивается с помощью CSS;
- в-шестых, количество активных элементов настраивается с помощью CSS; это означает, что его можно использовать для создания карусели как с одним активным слайдом, так и с любым другим их количеством.
Установка слайдера выполняется за 3 шага:
- добавить CSS слайдера chiefSlider на страницу или в CSS-файл, подключённый к странице;
- поместить HTML код слайдера в необходимое место страницы;
- вставить JavaScript код на страницу или в js-файл, подключённый к странице.
CSS и JavaScript код желательно минимизировать, это действие обеспечит более быструю загрузку страницы.
Как разработать простой слайдер для сайта (без зацикливания)Создание слайдера chiefSlider будет состоять из создания HTML кода, CSS и JavaScript (без jQuery).
HTML код слайдера chiefSlider :
Как видно, слайдер имеет очень простую HTML архитектуру. Начинается она с основного блока, который имеет класс slider . Данный блок состоит из 3 элементов.
Первый элемент - это.slider__wrapper . Он выступает в качестве обёртки для элементов.slider__item (слайдов).
Остальные два элемента (.slider__control) визуально представляют собой кнопки. С их помощью будет совершаться навигация по слайду, т.е. переход к предыдущим и следующим элементам.
CSS код слайдера chiefSlider :
/* ОСНОВНЫЕ СТИЛИ */ .slider { position: relative; overflow: hidden; } .slider__wrapper { display: flex; transition: transform 0.6s ease; /* 0.6 длительность смены слайда в секундах */ } .slider__item { flex: 0 0 50%; /* определяет количество активных слайдов (в данном случае 2 */ max-width: 50%; /* определяет количество активных слайдов (в данном случае 2 */ } /* СТИЛИ ДЛЯ КНОПОК "НАЗАД" И "ВПЕРЁД" */ .slider__control { position: absolute; display: none; top: 50%; transform: translateY(-50%); align-items: center; justify-content: center; text-align: center; width: 40px; /* ширина кнопки */ height: 50px; /* высота кнопки */ opacity: .5; /* прозрачность */ background: #000; /* цвет фона */ } .slider__control_show { display: flex; } .slider__control:hover, .slider__control:focus { text-decoration: none; outline: 0; opacity: .9; /* прозрачность */ } .slider__control_left { left: 0; } .slider__control_right { right: 0; } .slider__control::before { content: ""; display: inline-block; width: 20px; /* ширина иконки (стрелочки) */ height: 20px; /* высота иконки (стрелочки) */ background: transparent no-repeat center center; background-size: 100% 100%; } .slider__control_left::before { background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 8 8"%3E%3Cpath d="M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z"/%3E%3C/svg%3E"); } .slider__control_right::before { background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns="http://www.w3.org/2000/svg" fill="%23fff" viewBox="0 0 8 8"%3E%3Cpath d="M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z"/%3E%3C/svg%3E"); }
Как видно, CSS код слайдера тоже является не очень сложным . Основные определения, с помощью которых можно настроить внешний вид слайдера, снабжены комментариями .
CSS код, который определяет количество активных элементов :
/* определяет количество активных слайдов (в данном случае 2) */ flex: 0 0 50%; max-width: 50%;
Этот код устанавливает слайдеру число активных элементов, равное 2.
Для того чтобы слайдер, например, имел один активный элемент , эти определения необходимо изменить на следующие:
/* определяет количество активных слайдов (в данном случае 1) */ flex: 0 0 100%; max-width: 100%;
Создание адаптивного слайдера осуществляется посредством медиа запросов.
Например , слайдер, который на устройствах с крохотным экраном должен иметь один активный слайд, а на больших - четыре:
Slider__item { flex: 0 0 100%; max-width: 100%; } @media (min-width: 980px) { .slider__item { flex: 0 0 25%; max-width: 25%; } }
JavaScript код слайдера chiefSlider :
"use strict"; var multiItemSlider = (function () { return function (selector) { var _mainElement = document.querySelector(selector), // основный элемент блока _sliderWrapper = _mainElement.querySelector(".slider__wrapper"), // обертка для.slider-item _sliderItems = _mainElement.querySelectorAll(".slider__item"), // элементы (.slider-item) _sliderControls = _mainElement.querySelectorAll(".slider__control"), // элементы управления _sliderControlLeft = _mainElement.querySelector(".slider__control_left"), // кнопка "LEFT" _sliderControlRight = _mainElement.querySelector(".slider__control_right"), // кнопка "RIGHT" _wrapperWidth = parseFloat(getComputedStyle(_sliderWrapper).width), // ширина обёртки _itemWidth = parseFloat(getComputedStyle(_sliderItems).width), // ширина одного элемента _positionLeftItem = 0, // позиция левого активного элемента _transform = 0, // значение трансформации.slider_wrapper _step = _itemWidth / _wrapperWidth * 100, // величина шага (для трансформации) _items = ; // массив элементов // наполнение массива _items _sliderItems.forEach(function (item, index) { _items.push({ item: item, position: index, transform: 0 }); }); var position = { getMin: 0, getMax: _items.length - 1, } var _transformItem = function (direction) { if (direction === "right") { if ((_positionLeftItem + _wrapperWidth / _itemWidth - 1) >= position.getMax) { return; } if (!_sliderControlLeft.classList.contains("slider__control_show")) { _sliderControlLeft.classList.add("slider__control_show"); } if (_sliderControlRight.classList.contains("slider__control_show") && (_positionLeftItem + _wrapperWidth / _itemWidth) >= position.getMax) { _sliderControlRight.classList.remove("slider__control_show"); } _positionLeftItem++; _transform -= _step; } if (direction === "left") { if (_positionLeftItem position.getMax()) { nextItem = position.getItemMin(); _items.position = position.getMax() + 1; _items.transform += _items.length * 100; _items.item.style.transform = "translateX(" + _items.transform + "%)"; } _transform -= _step; } if (direction === "left") { _positionLeftItem--; if (_positionLeftItem < position.getMin()) { nextItem = position.getItemMax(); _items.position = position.getMin() - 1; _items.transform -= _items.length * 100; _items.item.style.transform = "translateX(" + _items.transform + "%)"; } _transform += _step; } _sliderWrapper.style.transform = "translateX(" + _transform + "%)"; }
На самом деле здесь всё просто.
Например, для того чтобы осуществить переход к следующему слайду сначала в массиве items ищется элемент с позицией большей, чем у текущего крайнего правого элемента.slider__item .
Если такой элемент в массиве есть , то выполняется трансформация элемента.slider__wrapper (т.е. действия, как и в алгоритме без зацикливания).
А вот если такого элемента нет , то кроме трансформации.slider__wrapper , выполняется ещё ряд действий . Во-первых , в массиве items ищется элемент с минимальной позицией . После получения этого элемента, ему устанавливается позиция, значение которой будет равно значению текущего правого элемента + 1 . Ну и конечно выполняется его трансформация , на такое количество процентов, чтобы он оказался в конце , т.е. после последнего элемента.
Для перехода к предыдущему слайду выполняются аналогичные действия, но наоборот.
Кроме этого для слайдера с зацикливанием не нужно переключать видимость кнопок "Влево" и "Вправо". Данные кнопки в этой версии слайдера будут отображаться всегда .
Чтобы это выполнить необходимо:
- удалить класс slider__control_show у элемента управления "Вправо";
- в CSS для селектора.slider__control изменить значение свойства display на flex .
Запрограммировать автоматическую смену слайдов через определённые промежутки времени можно с помощью функции setInterval .
Var _cycle = function (direction) { if (!_config.isCycling) { return; } _interval = setInterval(function () { _transformItem(direction); }, _config.interval); }
Функция setInterval в этом примере будет запускать функцию _transformItem через определённые интервалы времени, равные значению переменой _config.interval .
Кроме этого остановку автоматической смены слайдов желательно ещё добавить при поднесении курсора к слайдеру.
Осуществить этот функционал можно следующим образом:
If (_config.pause && _config.isCycling) { _mainElement.addEventListener("mouseenter", function () { clearInterval(_interval); }); _mainElement.addEventListener("mouseleave", function () { clearInterval(_interval); _cycle(_config.direction); }); }
Как остановить автоматическую смену слайдов, если элемент не виден пользователю?Отключить автоматическую смену слайдов целесообразно в двух случаях:
- когда страница (на которой расположен данный слайдер) является не активной;
- когда слайдер находится за пределами области видимости страницы.
Обработку первого случая можно осуществить с помощью события visibilitychange .
Document.addEventListener("visibilitychange", _handleVisibilityChange, false);
Функция для обработчика события visibilitychange:
// обработка события "Изменения видимости документа" var _handleVisibilityChange = function () { if (document.visibilityState === "hidden") { clearInterval(_interval); } else { clearInterval(_interval); _cycle(_config.direction); } }
Вычисление видимости элемента можно организовать с помощью функции _isElementVisible:
Function _isElementVisible(element) { var rect = element.getBoundingClientRect(), vWidth = window.innerWidth || doc.documentElement.clientWidth, vHeight = window.innerHeight || doc.documentElement.clientHeight, elemFromPoint = function (x, y) { return document.elementFromPoint(x, y); }; if (rect.right < 0 || rect.bottom < 0 || rect.left > vWidth || rect.top > vHeight) { return false; } return (element.contains(elemFromPoint(rect.left, rect.top)) || element.contains(elemFromPoint(rect.right, rect.top)) || element.contains(elemFromPoint(rect.right, rect.bottom)) || element.contains(elemFromPoint(rect.left, rect.bottom))); }
Поместить вызов _isElementVisible можно, например, в начало функции _transformItem . Это действие позволит отменить автоматическую смену слайдов, если слайдер в данный момент находится вне viewport .
Var _transformItem = function (direction) { var nextItem; if (!_isElementVisible(_mainElement)) { return; } //...
Слайдер, реагирующий на изменение размеров окна браузераДанный вариант адаптивного слайдера отличается от предыдущих тем, что он позволяет изменить количество активных элементов (слайдов) при изменении размеров окна браузера . Обычно пользователи не изменяют размер браузера, но всё же это может произойти.
Реализовано это с помощью использования события resize и массива _states . Массив используется для вычислений. Его применение позволит не выполнять переинициализацию слайдера, когда это не требуется.