Адаптивный слайдер для сайта на примере Owl Carousel 2 http://owlcarousel2.github.io/OwlCarousel2/ С тех пор как появились адаптивные сайты к различным мобильным устройствам, для многих web мастеров встала задача адаптации слайдера на сайте, т.к. зачастую слайдеры прошлого поколения были совсем не адаптивны. Одним из адаптивных слайдеров стал OWL Carousel v. 1.x.x. В данной статье мы будем рассматривать OWL Carousel 2, она не совместима с предыдущей версией OWL Carousel. Смысл этих плагинов остается такой же, и она имеет много общего с OWL Carousel но основной код был переписан с нуля, добавились новые функции. И так начнем, рассмотрим новые возможности OWL Carousel 2.
| Infinity Loop | Бесконечная петля |
|---|---|
| Center item | Центровка элементов |
| Smart Speed | Скорость движения слайда |
| Stage Padding | Уровень отступов |
| Item Margin | Отступы между элементами |
| Ability to make almost all options responsive | Возможность сделать почти все опции адаптивными |
| Various Widths | Различная ширина слайдов в одном слайдере |
| Callback Events | Обратный вызов при событии |
| YouTube/Vimeo support (fetching thumbnails as well) | Поддержка YouTube / Vimeo (извлечение миниатюр) |
| Anchors navigation | Якоря навигации |
| Merged Items | Объединенные элементов |
| and more... | и много другое |
| Chrome | Firefox | Opera |
| IE7 / 8/10/11 | Ipad Safari | iPod4 Safari |
| Nexus 7 Chrome | Galaxy S4 | Nokia 8s Windows8 |
<link rel="stylesheet" href="owlcarousel/owl.carousel.min.css">
<link rel="stylesheet" href="owlcarousel/owl.theme.default.min.css">
<script src="jquery-1.11.2.min.js"></script>
<script src="owlcarousel/owl.carousel.min.js"></script>
$(document).ready(function() {
$('.owl-carousel').owlCarousel({
loop:true, //Зацикливаем слайдер
margin:10, //Отступ от картино если выводите больше 1
nav:false, //Отключил навигацию
autoplay:true, //Автозапуск слайдера
smartSpeed:1000, //Время движения слайда
autoplayTimeout:2000, //Время смены слайда
responsive:{ //Адаптация в зависимости от разрешения экрана
0:{
items:1
},
600:{
items:1
},
1000:{
items:1
}
}
});
});
<div class="owl-carousel">
<div class="item"><img src="./img/content/owl/1.jpg" alt=""></div>
<div class="item"><img src="./img/content/owl/2.jpg" alt=""></div>
<div class="item"><img src="./img/content/owl/3.jpg" alt=""></div>
<div class="item"><img src="./img/content/owl/4.jpg" alt=""></div>
</div>
После подключения CSS стилей OWL Carousel 2, подключаем библиотеки JQuery и плагина OWL Carousel 2, создаем HTML разметку с нужными слайдами. Пример работы слайдера.




Список включая все варианты от встроенных плагинов видео, ленивой загрузки, авто высоты и анимации.
| items | Type: NumberDefault: 3 |
Количество слайдов выводимых на экране. |
| margin | Type: NumberDefault: 0 |
Отступ с права от слайдов (margin-right(px) on item). |
| loop | Type: BooleanDefault: false |
Бесконечная петля. Позволяет создать иллюзию цикла. |
| center | Type: BooleanDefault: false |
Центр. Хорошо работает даже с нечетным числом элементов. |
| mouseDrag | Type: BooleanDefault: true |
Включена опция перемещения слайдов мышью. |
| touchDrag | Type: BooleanDefault: true |
Включена опция сенсорного перемещения слайдов. |
| pullDrag | Type: BooleanDefault: true |
Тянуть слайд до края. |
| freeDrag | Type: BooleanDefault: false |
Тянуть слайд к краю. |
| stagePadding | Type: NumberDefault: 0 |
Перетяжка слева и справа на сцене (могут видеть соседние слайды). |
| merge | Type: BooleanDefault: false |
Слияние элементов. Looking for data-merge='{number}' inside item.. |
| mergeFit | Type: BooleanDefault: true |
Установить слившиеся элементы, если экран меньше, чем значение элементов. |
| autoWidth | Type: BooleanDefault: false |
Установить без содержания сетки. Попробуйте использовать стиль ширины на дивы. |
| startPosition | Type: Number/StringDefault: 0 |
Стартовая позиция или URL Hash строку как '#ID'. |
| URLhashListener | Type: BooleanDefault: false |
Слушать URL-адрес хэш изменения. Необходимые данные-хэш элементов. |
| nav | Type: BooleanDefault: false |
Показать кнопки next/prev. |
| navRewind | Type: BooleanDefault: true |
Перейти к первому / последним. |
| navText | Type: ArrayDefault: ['next','prev'] |
HTML разрешено. |
| slideBy | Type: Number/StringDefault: 1 |
Навигации слайд-х. Строка "страница" может быть установлен, чтобы скользить по странице. |
| dots | Type: BooleanDefault: true |
Показать многоточия навигации. |
| dotsEach | Type: Number/BooleanDefault: false |
Показать точки каждого х элемента. |
| dotData | Type: BooleanDefault: false |
Используется содержание данных точек. |
| lazyLoad | Type: BooleanDefault: false |
Ленивые загрузки изображений. Данных data-src и data-src-retina для highres. Кроме загрузки изображений в фоновом режиме используется встроенный стиль, если элемент не является <IMG> |
| lazyContent | Type: BooleanDefault: false |
lazyContent было введено во время бета-тестирования, но я удалил его из окончательного сборки из-за плохой реализации. Это хороший варианты так что я буду работать над ним в ближайшее время. |
| autoplay | Type: BooleanDefault: false |
Автовоспроизведение. |
| autoplayTimeout | Type: NumberDefault: 5000 |
Автовоспроизведение интервала timeout. |
| autoplayHoverPause | Type: BooleanDefault: false |
Пауза при наведении курсора мыши. |
| smartSpeed | Type: NumberDefault: 250 |
Скорость расчета. Подробнее об этом позже. |
| fluidSpeed | Type: BooleanDefault: Number |
Скорость расчета. Подробнее об этом позже. |
| autoplaySpeed | Type: Number/BooleanDefault: false |
Автозапуск скорости. |
| navSpeed | Type: Number/BooleanDefault: false |
Скорость навигации |
| dotsSpeed | Type: BooleanDefault: Number/Boolean |
Скорость разбивка. |
| dragEndSpeed | Type: Number/BooleanDefault: false |
Скорость перетаскивания. |
| callbacks | Type: BooleanDefault: true |
Включение обратного вызова для события. |
| responsive | Type: ObjectDefault: empty object |
Объект, содержащий реагирующие варианты. Может быть установлен в false, чтобы удалить адаптивные возможности. |
| responsiveRefreshRate | Type: NumberDefault: 200 |
Частота обновления. |
| responsiveBaseElement | Type: DOM elementDefault: window |
Установите на любом элементе DOM. Если вы заботитесь о неприменении адаптивности браузера (например, ie8), а затем используете его на главной обертке. Это предотвратит от сумасшедшего изменения размера. |
| responsiveClass | Type: BooleanDefault: false |
Дополнительный вспомогательный класс. Добавить 'owl-reponsive-' + 'breakpoint' точки останова к основному элементу. Может использоваться для стилизации контента на данной контрольной точке. |
| video | Type: BooleanDefault: false |
Включить YouTube выборку / Vimeo видео. |
| videoHeight | Type: Number/BooleanDefault: false |
Установить высоту видео. |
| videoWidth | Type: Number/BooleanDefault: false |
Установить ширину видео. |
| animateOut | Type: String/BoleanDefault: false |
CSS3 анимация вне. |
| animateIn | Type: String/BoleanDefault: false |
CSS3 анимация в. |
| fallbackEasing | Type: StringDefault: swing |
Облегчение для CSS2 $ .animate. |
| info | Type: FunctionDefault: false |
Обратный вызов для получения базовой информации (текущий элемент / страницы / ширины). Функция Info Второй параметр Owl DOM ссылка на объект. |
| nestedItemSelector | Type: String/ClassDefault: false |
Используйте его, если элементы совы глубоко вложенными внутри некоторого генерируемого содержимого. E.g 'youritem'. Не используйте точку перед именем класса. |
| itemElement | Type: StringDefault: div |
DOM тип элемента для Owl-item. |
| stageElement | Type: StringDefault: div |
DOM тип элемента для owl-stage. |
| navContainer | Type: String/Class/ID/BoleanDefault: false |
Установить собственный контейнер для nav. |
| dotsContainer | Type: String/Class/ID/BoleanDefault: false |
Установить собственный контейнер для nav. |
Данный пример того, как визуализируется HTML. С помощью следующих параметров вы можете изменить почти каждый класс, как вы хотите
<div class="owl-carousel owl-theme owl-loaded">
<div class="owl-stage-outer">
<div class="owl-stage">
<div class="owl-item">...</div>
<div class="owl-item">...</div>
<div class="owl-item">...</div>
</div>
</div>
<div class="owl-controls">
<div class="owl-nav">
<div class="owl-prev">prev</div>
<div class="owl-next">next</div>
</div>
<div class="owl-dots">
<div class="owl-dot active"><span></span></div>
<div class="owl-dot"><span></span></div>
<div class="owl-dot"><span></span></div>
</div>
</div>
</div>
| themeClass | Type: Class/StringDefault: owl-theme |
Тема класса. |
| baseClass | Type: Class/StringDefault: owl-carousel |
Базовый элемент класса. |
| itemClass | Type: Class/StringDefault: owl-item |
Пункт класса. |
| centerClass | Type: Class/StringDefault: center |
Класс центр. |
| activeClass | Type: Class/StringDefault: active |
Активный класс. |
| navContainerClass | Type: Class/StringDefault: owl-nav |
Класс Nav контейнер |
| navClass | Type: Array/Class/StringDefault: ['owl-prev','owl-next'] |
Класс Nav кнопки. |
| controlsClass | Type: Class/StringDefault: owl-controls |
Элементы управления класса - обертка для Navs и точек. |
| dotClass | Type: Class/StringDefault: owl-dot |
Класс точки. |
| dotsClass | Type: Class/StringDefault: owl-dots |
Dots Class - Контейнер для точек . |
| autoHeightClass | Type: Class/StringDefault: owl-height |
Класс авто высоты. |
Events
События, предусмотренные Owl Carousel в стратегических местах кода. Это дает вам возможность прослушивать любые изменения в действии карусели и использовать события для реализации своих действий.
Пример кода для отлавливания события при смене слайда в OWL Carousel
var owl = $('.owl-carousel');
owl.owlCarousel();
// Слушаем измитения в OWL
owl.on('changed.owl.carousel', function(event) {
...
})
Вы также можете использовать триггер для управления OWL Carousel для управления слайдами
var owl = $('.owl-carousel');
owl.owlCarousel();
// Переключаем слайд вперед
$('.customNextBtn').click(function() {
owl.trigger('next.owl.carousel');
})
// Переключаем слад назад
$('.customPrevBtn').click(function() {
// Устанавливаем параметр скорости
// Параметр должен быть заключен в кавдрадные скобки '[]'
owl.trigger('prev.owl.carousel', [300]);
})
Callbacks
Вы также можете использовать функцию обратного вызова Callbacks для своих нужд
$('.owl-carousel').owlCarousel({
onDragged: callback
});
function callback(event) {
...
}
Data
Каждое событие имеет очень полезную информацию в объекте события. Основывайтесь на приведенном выше примере:
function callback(event) {
// По основным
// DOM элемент, например .owl-carousel
var element = event.target;
// Имя события, например dragged
var name = event.type;
// Пространство имен события, например owl.carousel
var namespace = event.namespace;
// Количество элементов
var items = event.item.count;
// Позиция текущего элемента
var item = event.item.index;
// Плагин навигации карусели
// Количество страниц
var pages = event.page.count;
// Положение текущей страницы
var page = event.page.index;
// Количество элементов на странице
var size = event.page.size;
}
28/10/2018 16:31:47
28/08/2017 07:42:49
Денис, используйте URLhashListener http://demo.lanrenzhijia.com/2014/owl0509/demos/urlhash.html
29/08/2017 18:01:40
20/04/2017 18:39:38
Пришлите архив с вашим скриптом мне на почту bezramok-tlt@mail.ru или дайте ссылку чтобы посмотреть ваш слайдер.
20/04/2017 19:20:59
23/03/2017 14:12:51
Доброго времени суток.
$(document).ready(function() {
$('.owl-carousel').owlCarousel({
loop:true, //Зацикливаем слайдер
margin:10, //Отступ от картино если выводите больше 1
nav:false, //Отключил навигацию
autoplay:true, //Автозапуск слайдера
autoplayHoverPause:true, //Пауза при навидении мыши
smartSpeed:1000, //Время движения слайда
autoplayTimeout:2000, //Время смены слайда
responsive:{ //Адаптация в зависимости от разрешения экрана
0:{
items:1
},
600:{
items:1
},
1000:{
items:1
}
}
});
});
Вот с этими настройками у меня все прекрасно работает! Если у Вас не заработает, почистите кэш браузера!
27/03/2017 13:26:39
18/02/2017 12:15:14
Доброго времени суток Анна. Не совсем понятна ваша задача. Если есть ссылка с примером что вы хотите киньте мне ее на почту bezramok-tlt@mail.ru
P.S. А не проще сделать слайд с текстом, чтобы при прокрутке слайдов у каждого слайда был свой текст?
19/02/2017 10:27:52
(function (jQuery)
{
jQuery(function ()
{
//Мобильная ширина
var mobileWidth = 900;
//Текущая ширина браузера
var brouserWidth = $(window).width();
if(brouserWidth <= mobileWidth)
{
//Скрыть первый слайд
$('.owl-item').first().remove();
$('.owl-page').first().remove();
}
});
})(jQuery)
15/12/2016 12:46:16
08/12/2016 18:59:30
08/12/2016 15:21:24