Simon Kirites
Посетитель
- Регистрация
- 5 Авг 2022
- Сообщения
- 30
- Реакции
- 8
Тестировал Owl Carousel на jQuery v3.x не обнаружил никаких проблем, ошибка ни как не связана с версии jQuery. Всего скорее у вас проблема и конфликт с другими скриптами!Проблема с прокруткой на мобильной версии когда делаешь слайд в левом или в право то появляется такая ошибка на сайте стоит jQuery v3.6.0 на jQuery 2x.x.x такой проблемы нету
$('.carousel').owlCarousel({
autoplay: true,
autoplayHoverPause:true,
autoplayTimeout: 4500,
smartSpeed: 500,
animateOut: 'slideOutDown',
animateIn: 'flipInX',
loop:true,
margin: 20,
nav:true,
navText: false,
dots: false,
itemElement: 'li',
stageElement: 'ul',
responsive:{0:{items:1}, 300:{items:1}, 400:{items:2}, 600:{items:3}, 1000:{items:5}}
});
$(document).ready(function(){
$('.owl-carousel-anime').owlCarousel({
loop:true,
autoplayHoverPause: true,
smartSpeed: 600,
slideBy: 1,
autoplay: true,
autoplayTimeout: 5000,
margin:1,
autoHeight:true,
nav:false,
dots:false,
responsive:{
0:{
items:3
},
600:{
items:5
},
1000:{
items:7
}
}
})
$('.anime-next').on('click', function() {
$('.owl-carousel-anime').trigger('next.owl.carousel');
});
$('.anime-previous').on('click', function() {
$('.owl-carousel-anime').trigger('prev.owl.carousel');
});
$('.owl-carousel-channel').owlCarousel({
loop:true,
autoplayHoverPause: true,
smartSpeed: 600,
slideBy: 1,
autoplay: true,
autoplayTimeout: 5000,
margin:1,
nav:false,
dots:false,
responsive:{
0:{
items:1
},
600:{
items:2
},
1000:{
items:3
}
}
})
$('.channel-next').on('click', function() {
$('.owl-carousel-channel').trigger('next.owl.carousel');
});
$('.channel-previous').on('click', function() {
$('.owl-carousel-channel').trigger('prev.owl.carousel');
});
$('.owl-carousel-re').owlCarousel({
loop:true,
autoplayHoverPause: true,
smartSpeed: 600,
slideBy: 1,
autoplay: true,
autoplayTimeout: 5000,
margin:1,
nav:false,
dots:false,
responsive:{
0:{
items:2
},
600:{
items:3
},
1000:{
items:4
}
}
})
$('.re-next').on('click', function() {
$('.owl-carousel-re').trigger('next.owl.carousel');
});
$('.re-previous').on('click', function() {
$('.owl-carousel-re').trigger('prev.owl.carousel');
});
Если вам это как-то поможет, можете попробовать использовать этот скрипт, скачен с офф. сайта разработчика.
На сайте использовал вот такую конструкцию:
навигацию кнопок "назад" и "вперёд" использовал в стилях свои, при помощи FontAwesomeJavaScript:$('.carousel').owlCarousel({ autoplay: true, autoplayHoverPause:true, autoplayTimeout: 4500, smartSpeed: 500, animateOut: 'slideOutDown', animateIn: 'flipInX', loop:true, margin: 20, nav:true, navText: false, dots: false, itemElement: 'li', stageElement: 'ul', responsive:{0:{items:1}, 300:{items:1}, 400:{items:2}, 600:{items:3}, 1000:{items:5}} });
Kарусель в архиве у меня проблема именно когда с телефона не по кнопке вперед назад а пальцем делаешь слайд вперед назад
.owl-carousel-anime, .owl-carousel-channel, .owl-carousel-re {
-ms-touch-action: pan-y;
touch-action: pan-y;
}
.owl-carousel-anime, .owl-carousel-channel, .owl-carousel-re {
-ms-touch-action: none;
touch-action: none;
}
jQuery.event.special.touchstart = {
setup: function (_, ns, handle) {
this.addEventListener('touchend', handle, { passive: !ns.includes('noPreventDefault') });
}
};
js код помог согласен что не лучший вариант, но хотя бы так. Спасибо, в любом случаеТеперь понял в чём проблема. Из документа разработчика. Если вы вызываете preventDefault каждый touchstart, у вас также должно быть правило CSS для отключения сенсорной прокрутки. Если у вас есть горизонтальная карусель, рассмотрите возможность применения touch-action: pan-y pinch-zoom; к ней, чтобы пользователь мог прокручивать вертикально и масштабировать как обычно.
Например:
CSS:.owl-carousel-anime, .owl-carousel-channel, .owl-carousel-re { -ms-touch-action: pan-y; touch-action: pan-y; }
или
CSS:.owl-carousel-anime, .owl-carousel-channel, .owl-carousel-re { -ms-touch-action: none; touch-action: none; }
Если и это не поможет, то можно использовать скрипт, добавьте в конец своего js документа вот такие строки:
JavaScript:jQuery.event.special.touchstart = { setup: function (_, ns, handle) { this.addEventListener('touchend', handle, { passive: !ns.includes('noPreventDefault') }); } };
конечно не самый лучший вариант, но должно сработать!
jQuery.event.special.touchstart = {
setup: function( _, ns, handle ) {
this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") });
}
};
jQuery.event.special.touchmove = {
setup: function( _, ns, handle ) {
this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") });
}
};
jQuery.event.special.wheel = {
setup: function( _, ns, handle ){
this.addEventListener("wheel", handle, { passive: true });
}
};
jQuery.event.special.mousewheel = {
setup: function( _, ns, handle ){
this.addEventListener("mousewheel", handle, { passive: true });
}
};
К сожалению это не помоглоОжидается, что это будет испавлено в jQuery 4, а пока что предлагаемое исправление состоит в том, чтобы добавить этот код сразу после загрузки jQuery:
JavaScript:jQuery.event.special.touchstart = { setup: function( _, ns, handle ) { this.addEventListener("touchstart", handle, { passive: !ns.includes("noPreventDefault") }); } }; jQuery.event.special.touchmove = { setup: function( _, ns, handle ) { this.addEventListener("touchmove", handle, { passive: !ns.includes("noPreventDefault") }); } }; jQuery.event.special.wheel = { setup: function( _, ns, handle ){ this.addEventListener("wheel", handle, { passive: true }); } }; jQuery.event.special.mousewheel = { setup: function( _, ns, handle ){ this.addEventListener("mousewheel", handle, { passive: true }); } };
Теперь понял в чём проблема. Из документа разработчика. Если вы вызываете preventDefault каждый touchstart, у вас также должно быть правило CSS для отключения сенсорной прокрутки. Если у вас есть горизонтальная карусель, рассмотрите возможность применения touch-action: pan-y pinch-zoom; к ней, чтобы пользователь мог прокручивать вертикально и масштабировать как обычно.
Например:
CSS:.owl-carousel-anime, .owl-carousel-channel, .owl-carousel-re { -ms-touch-action: pan-y; touch-action: pan-y; }
или
CSS:.owl-carousel-anime, .owl-carousel-channel, .owl-carousel-re { -ms-touch-action: none; touch-action: none; }
Если и это не поможет, то можно использовать скрипт, добавьте в конец своего js документа вот такие строки:
JavaScript:jQuery.event.special.touchstart = { setup: function (_, ns, handle) { this.addEventListener('touchend', handle, { passive: !ns.includes('noPreventDefault') }); } };
конечно не самый лучший вариант, но должно сработать!
Так и сделал js код поставилИспользуйте этот вариант, он рабочий!