/ Scripts & jquery / Создание карусели Owl параметрами из HTML

Создание карусели Owl параметрами из HTML

HIT

06.11.2023

1036

Создадим универсальный скрипт создания Owl-карусели. Параметры для каждой отдельной карусели будут задаваться из атрибутов элемента самой карусели.

Верстка

<div class="container">
	<div class="site-carousel mobile-carousel-0 row row-cols-4 image-text-vertical" 
	data-mobile="1400"
	data-items="4"
	data-margin="30" 
	data-loop="false" 
	data-autoplay="true" 
	data-nav="true" 
	data-dots="false"
	data-responsive='{"0":{"items": "1"}, "576":{"items": "2"}, "1200":{"items": "3"}}'>

<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>

</div>

Атрибуты нельзя оставлять пустыми. Если тот или иной атрибут не нужен лучше его удалять, тогда будет применяться значение по умолчанию

Скрипт

jQuery(document).ready(function($) {   

	$('.site-carousel').each(function(){

		var items = $(this).data('items');
		if(items == undefined || items == '') { items = 1; } // если атрибут не назначен

		var margin = $(this).data('margin');
		var loop = $(this).data('loop');
		var autoplay = $(this).data('autoplay');
		var nav = $(this).data('nav');
		var dots = $(this).data('dots');
		var responsive = $(this).data('responsive');

		if( !$(this).hasClass('mobile-carousel') ) {

			$(this).addClass('owl-carousel owl-theme');

			$(this).owlCarousel({
				items: items,
				margin: margin,
				loop: loop,
				autoplay: autoplay,
	
				lazyLoad: true,
				smartSpeed: 1000,
				autoplayHoverPause: true,
				//animateOut: 'fadeOut',
	
				navText: ['<i class="icon-chevron-left2"></i>', '<i class="icon-chevron-right2"></i>'],
				nav: nav,
				dots: dots,

				responsive: responsive
			});

		} else {

			var width = $(window).width();
			var mobile = $(this).data('mobile');
			if(mobile == undefined || mobile == '') { mobile = 1024; } // если атрибут не назначен

			if (width <= mobile) {

				$(this).addClass('owl-carousel owl-theme');

				$(this).owlCarousel({
					items: items,
					margin: margin,
					loop: loop,
					autoplay: autoplay,
		
					lazyLoad: true,
					smartSpeed: 1000,
					autoplayHoverPause: true,
					//animateOut: 'fadeOut',
		
					navText: ['<i class="icon-chevron-left2"></i>', '<i class="icon-chevron-right2"></i>'],
					nav: nav,
					dots: dots,

					responsive: responsive
				});

			}

		}

	});

});

Если присутствует класс mobile-carousel то карусель обращается к параметру data-mobile и создает карусель только при указанной ширине.

Передача логических (bool) атрибутов loop, autoplay, nav и т.д., не работает если параметры будут содержаться в атрибутах вида loop=»true», а парсятся функцией .attr(«loop»). При этом корректно работает через .data.

Есть еще один вариант передачи параметров, не пробовал его.

<div class="owl-carousel" data-carousel-options='{"autoplay":"true","autoplayTimeout":"6000","items":"2"}'> ... </div>
var oc = $('.owl-carousel');
var ocOptions = oc.data('carousel-options');
var defaults = {
	loop: true,
	nav: false,
	autoplay: true,
}
oc.owlCarousel( $.extend( defaults, ocOptions) );

Стили, предназначенные для корректного отображения карусели, при том что карусель изначально не применялась:

.row.owl-theme {
    margin: unset;
}

.row.owl-theme > * {
    width: auto;
    padding: unset;
}

.row.owl-theme .item {
    width: 100%;
}

.site-carousel .owl-stage {
  display: flex;
  flex-wrap: wrap;
}

.site-carousel .owl-stage .owl-item {
  display: flex;
  flex: 1 0 auto;
}

Анонс следующего слайда

Создадим эффект следующего слайда, штатными средствами Owl Carousel.

Для разрешения с которого это необходимо прописываем в responsive

stagePadding: 30,
margin: 30

Делаем слайдер для это разрешения полностью видимым:

.owl-carousel.mobile-shift .owl-stage-outer {
    overflow: visible;
}

Но контейнер в котором содержится слайдер нужно защитить от переполнения (overflow: hidden;).

[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Управление Owl-каруселью внешним интерфейсом

Управление Owl-каруселью внешним интерфейсом

Подключим к управлению Owl-каруселью различные варианты внешнего интерфейса. Кастомные стрелки навигации Кастомные стрелки навигации (чтобы, например, сделать их по ширине контейнера): Стандартные стрелки скрываем стилями. Скрипт управления: Можно использовать этот Читать далее »

Owl Carousel

Owl Carousel

Разберем решение по созданию слайдеров и каруселей Owl Carousel 2. У данной карусели есть ряд преимуществ по сравнению с каруселью slick: Чего в нем нет, так это связки слайдера с Читать далее »

ProgressBar для Owl.Carousel v.2

ProgressBar для Owl.Carousel v.2

Добавим к плагину карусели Owl Carousel (2 версии) progressbar при автоперемотке слайдов. Я наткнулся на 2 решения: попроще и посложнее. Вариант попроще Данное решение довольно примитивное. Необходимо самостоятельно добавлять к Читать далее »

Добавить комментарий

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6170

Пока нет комментариев. Будь первым!

Создание карусели Owl параметрами из HTML Создание карусели Owl параметрами из HTML
Подгрузка постов «налету» II: Кнопка
Рекомендации для васПодгрузка постов «налету» II: КнопкаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.