Не отображается навигация и пагинация owl-карусели, почему?
Установил pagination и navigation в положение true, но ни то, ни другое не отображается никак
У обоих блоков высота 0 и находятся они слева под слайдером.
Все стили подключены, js-файлы подключены, карусель работает отлично, но навигация и пагинация не отображается вообще никак
Ни ошибок, ни предупреждений в консоли нет
Почему в слайдере owl-carousel вылазит кусок другой картинки?
странное совпадение, но сам недавно работал с этой библиотекой и такое же поведение было. решилось тем, что сначала дожидался загрузки изображений (через событие onload
) а только потом запускал инициализацию слайдера библиотеки.
если точнее, то эта библиотека при инициализации вычисляет и задает своим блокам фиксированые размеры ширины, отталкиваясь от размеров изображений.
обратите внимание на размеры блоков owl-item
и на их инлайн стили, которые задает библиотека. они неправильно вычисляются, по-этому у вас и такой баг.
Owl-carousel при изменении размера начинают отображаться все итемы,и карусель не работает
Доброго времени суток.
Установил owl-carousel,опыт работы с этим плагином сводился к парочке раз.Но без проблем.В этот раз столкнулся с проблемой такого характера :
При изменении размера страницы либо смены ориентации на телефоне,слайдер перестает работать,и все итемы выстраиваются как строчно блочные элементы.Перезагрузка страницы с новым изображением не помогает.
Может кто-то может подсказать в чем заключается проблема.
Скрнишоты :
https://puu.sh/w8gHa/a52a0315b2.png — 320px Работает как надо.
https://puu.sh/w8gJc/e2308f34ca.png — 570px Ломается
Начинает ломаться от 480px до 1200px.
Не могу понять из-за чего это происходит :/Итемы вложенные в слайдер резиновые,должны занимать всю ширину.
Код
HTML
<section class="reviews">
<div class="container">
<div class="row">
<p class="section-title">Отзывы наших учеников</p>
</div>
<div class="row">
<div class="owl-carousel">
<div class="item">
<div class="slide-wrap">
<div class="review-photo"><img src="images/review.jpg" alt=""></div>
<div class="reviewer-name">
<p>Соломатина Наталья</p>
</div>
<span class="hr"></span>
<div class="review-content">
<p>Хочу поблагодарить ProKurs и Алену за проведенные курсы повышения квалификации. Эти уроки помогли мне преодолеть трудности. Уроки проходили в дружеской и непосредственной атмосфере, что способствовало хорошему усвоению материала и мотивировало на дальнейшие занятия. Алена всегда находила интересные темы для обсуждения.</p>
</div>
</div>
</div>
<div class="item">
<div class="slide-wrap">
<div class="review-photo"><img src="images/review.jpg" alt=""></div>
<div class="reviewer-name">
<p>Соломатина Наталья</p>
</div>
<span class="hr"></span>
<div class="review-content">
<p>Хочу поблагодарить ProKurs и Алену за проведенные курсы повышения квалификации. Эти уроки помогли мне преодолеть трудности. Уроки проходили в дружеской и непосредственной атмосфере, что способствовало хорошему усвоению материала и мотивировало на дальнейшие занятия. Алена всегда находила интересные темы для обсуждения.</p>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
JS
$(document).ready(function(){
$('.owl-carousel').owlCarousel();
})
$('.owl-carousel').owlCarousel({
loop:true,
items: 1,
responsive:{
0:{
items:1,
nav:true
},
600:{
items:1,
nav:true
},
1000:{
items:1,
nav:true,
loop:false
}
}
})
SCSS
section.reviews {
background-image: url('../images/middle_bg.jpg');
background-repeat: no-repeat;
background-position: center top;
background-attachment: scroll;
color: $white;
p.section-title {
color: inherit;
}
div.slide-wrap {
width: 100%;
display: block;
text-align: center;
div.review-photo {
img {
width: 164px;
height: 164px;
border: 10px solid #606161;
background-color: #606161;
border-radius: 50%;
}
}
div.reviewer-name {
font-family: 'Times New Roman' , sans-serif;
font-style: italic;
font-size: 1.57em;
padding-top: 8px;
}
span.hr {
width: 80px;
height: 1px;
background-color: #C79A79;
display: block;
margin: 20px auto;
}
div.review-content {
p {
font-family: $R_Regular;
font-size: 1.07em;
max-width: 720px;
margin: 0 auto;
}
}
}
}
Почему не работает вторая owl carousel?
Здравствуйте, на сайте есть слайдер Owl Carousel 2, подключён нормально, всё хорошо работает, вот код подключения:
$(() => {
let owl = $('.owl-carousel');
owl.owlCarousel({
// Options
items: 5,
margin: 10,
loop: true,
nav: true,
dots: false,
lazyLoad: true,
responsive:{
0:{
items: 2,
},
480:{
items: 3,
},
600:{
items: 4,
},
800:{
items: 5,
}
},
// Events
onChange: (event) => {
//console.log(event);
},
onChanged: (event) => {
let item = event.item.index;
let pic_src = $('.owl-item').eq(item).find('img').attr('data-src');
$('.owl_big_pic img').attr('src', pic_src);
},
});
$('.btn_next').on('click', () => {
owl.trigger('next.owl.carousel', [300]);
});
$('.btn_prev').on('click', () => {
owl.trigger('prev.owl.carousel', [300]);
});
/**
$(document).on('click', '.owl-item', function(){
let pic_src = $(this).find('img').attr('data-src');
$('.owl_big_pic img').attr('src', pic_src);
});*/
});
<div class="row">
<div class="owl_big_pic">
<img src="" style="width:100%;" />
<span class="nav btn_prev"></span>
<span class="nav btn_next"></span>
</div>
<div class="owl-carousel owl-theme">
<img class="owl-lazy" data-src="img/slider/slider8.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider9.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider10.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider11.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider12.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider13.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider14.jpg" alt="" />
<img class="owl-lazy" data-src="img/slider/slider15.jpg" alt="" />
</div>
</div>
Но теперь нужно добавить ещё 1 слайдер:
<div class="owl-carousel">
<div class="video-catalog__item">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<div class="video-catalog__item">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<div class="video-catalog__item">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
<div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
</div>
</div>
Подключаю: $('.owl-carousel2').owlCarousel();
И происходит какая-то чехарда. Смотрю в консоли, все классы навеселись, элементы ужались, но самой карусели нет(код из консоли):
<div class="owl-carousel2 owl-loaded owl-drag">
<div class="owl-stage-outer"><div class="owl-stage" style="transform: translate3d(0px, 0px, 0px); transition: 0s; width: 2394px;"><div class="owl-item active" style="width: 342px;"><div class="video-catalog__item">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div><div class="owl-item active" style="width: 342px;"><div class="video-catalog__item">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div><div class="owl-item active" style="width: 342px;"><div class="video-catalog__item">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div><div class="owl-item" style="width: 342px;"><div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div><div class="owl-item" style="width: 342px;"><div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div><div class="owl-item" style="width: 342px;"><div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div><div class="owl-item" style="width: 342px;"><div class="video-catalog__item ">
<iframe src="https://www.youtube.com/embed/3SpG7C4vHZQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen=""></iframe>
</div></div></div></div><div class="owl-nav disabled"><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>
При этом если у обоих слайдеров указать класс .owl-carousel, то всё ок, но 2 слайдер мне тоже нужно настроить. С чем проблема? Всё уже проверил, и так и сяк ставил, в консоли нет никаких ошибок. Уже мозг плавится, помогите!!!
Css — подключаем файлы стилей для карусели owl carousel 2
Подключаем в хедере, в примере абсолютные пути на CDN, но лучше подключать стили и скрипты со своего сайта.
Html — html-код самой карусели owl carousel 2
Самая простая и базовая разметка для понимания, в каждом слайде может быть любое количество блоков и элементов.
Js — подключаем необходимые скрипты для owl carousel 2
Подключаем в футере jQuery, библиотеку OwlCarousel2 и свйо файл скриптов, в котором инициализируем и настраиваем слайдер.Здесь указаны абсолютные ссылки на CDN, но лучше подключать все стили и скрипты со своего сайта, предварительно скачав все файлы по этой ссылке.
Owl carousel как спозиционировать стрелки навигации?
Добрый день, уважаемые.
В процессе верстки столкнулся с такой проблемой. При замене стандартных стрелок навигации в owl слайдере и позиционирования их по краям слайдера вся эта область навигации накладываеться поверх картинок (показал на фото), поскольку задаю ширину width:100%
, после чего, разумеется, нету возможности нажать на картинки слайдера (если они, допустим, являются ссылками на другие продукт).
Как это исправить? Стрелки должны быть прижаты к краям слайдера при изменении размеров экрана.
Может, есть статья, где описывается как с данным слайдером работать правильно? Я в документации читал, что можно через JS заменять эти стрелки, но в данном случае они композиционные (стрелочка и подложка), и тут такое не прокатит.
Для примера:
$(".owl-carousel-2").owlCarousel({
loop: true,
nav: true,
dots: false,
autoplay: false,
// margin: 5,
navText: true,
stopOnHover: true,
smartSpeed: 1000, //Время движения слайда
autoplayTimeout: 4000, //Время смены слайда
pagination: false,
responsiveClass: true,
responsive: {
1200: {
items: 8
},
992: {
items: 6
},
320: {
items: 4
}
}
});
.brand-baner {
padding: 20px 0;
max-height: 120px;
overflow: hidden;
}
.main-banner__slider,
.brand-baner__slider {
position: relative;
}
.main-banner__slider .owl-nav,
.brand-baner__slider .owl-nav {
position: absolute;
width: 100%;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
z-index: 999;
}
.main-banner__slider .owl-nav .owl-prev,
.brand-baner__slider .owl-nav .owl-prev {
float: left;
position: relative;
width: 30px;
height: 50px;
background-color: #202020;
font-weight: bold;
line-height: 1;
font-size: 38px;
transition: all 0.2s;
}
.main-banner__slider .owl-nav .owl-prev:before,
.brand-baner__slider .owl-nav .owl-prev:before {
content: "";
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
display: block;
width: 13px;
height: 17px;
background: url("http://svgshare.com/i/2MZ.svg") 50% 50% no-repeat;
}
.main-banner__slider .owl-nav .owl-prev:hover,
.brand-baner__slider .owl-nav .owl-prev:hover {
transition: all 0.2s;
background-color: #fff;
}
.main-banner__slider .owl-nav .owl-prev:hover:before,
.brand-baner__slider .owl-nav .owl-prev:hover:before {
background: url("http://svgshare.com/i/2Jk.svg") 50% 50% no-repeat;
}
.main-banner__slider .owl-nav .owl-next,
.brand-baner__slider .owl-nav .owl-next {
float: right;
position: relative;
width: 30px;
height: 50px;
font-weight: bold;
background-color: #202020;
}
.main-banner__slider .owl-nav .owl-next:before,
.brand-baner__slider .owl-nav .owl-next:before {
content: "";
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
display: block;
width: 13px;
height: 17px;
background: url("http://svgshare.com/i/2Mj.svg") 50% 50% no-repeat;
}
.main-banner__slider .owl-nav .owl-next:hover,
.brand-baner__slider .owl-nav .owl-next:hover {
transition: all 0.2s;
background-color: #fff;
}
.main-banner__slider .owl-nav .owl-next:hover:before,
.brand-baner__slider .owl-nav .owl-next:hover:before {
background: url("http://svgshare.com/i/2Mv.svg") 50% 50% no-repeat;
}
.owl-carousel .owl-item img {
width: auto !important;
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.min.js"></script>
<div class="brand-baner">
<div class="brand-baner__slider owl-carousel-2 owl-carousel">
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image1" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image2" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image3" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image4" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image5" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image6" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image7" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image8" /></a>
</div>
</div>
<div class="brand-baner__item">
<div class="brand-baner__wp-img">
<a href="#"> <img class="brand-baner__pic" src="https://dummyimage.com/100x64/99cccc.gif&text=The image9" /></a>
</div>
</div>
</div>
</div>
Как добавить видео в карусель owl carousel:
1. Добавляем в options:
video:true
2. Используем такую разметку для HTML:
Как сделать анимированную смену слайдов
Сначала подключаем дополнительно файл стилей animate.css, можно отсюда:
Код js для инициализации owl carousel 2 на мобильных и дестроя на десктопе:
var $homeSlider = $(".home-slider"); $(window).resize(function() { showHomeSlider(); }); function showHomeSlider() { if ($homeSlider.data("owlCarousel") !== "undefined") { if (window.matchMedia("(max-width: 768px)").matches) { initialHomeSlider(); } else { destroyHomeSlider(); } } } showHomeSlider(); function initialHomeSlider() { $homeSlider.addClass("owl-carousel").owlCarousel({ items: 1, loop: true, autoplay: true, autoplayTimeout: 2000, smartSpeed: 1000 }); } function destroyHomeSlider() { $homeSlider.trigger("destroy.owl.carousel").removeClass("owl-carousel"); }
Пример инициализации owl carousel 2 на мобильных и дестроя на десктопе
Для наглядности скройте все вкладки кроме Результата.
See the Pen Owl Carousel Base 3 slides by Denis (@deniscreative) on CodePen.0
Пример разрушения слайдера для обычного экрана и использование слайдера только для мобильных телефонов
trigger(‘destroy.owl.carousel’)
Суть задачи в том ,что на десктопной версии нам не нужен слайдер, а нужно, чтобы блоки были друг за другом в несколько рядов, а вот на мобильной версии сайта, чтобы не размещать кучу блоков друг под другом, мы сделаем просто слайдер, в котором разместятся все блоки, но по высоте эта вся секция займет всего один блок.
Нужно немного правок внести в стили CSS, а так же поменять код инициализации карусели, весь скрипт расписывать не буду, основная суть его в том, что при ширине экрана больше 600px — карусель разрушается и остаются просто блоки внутри контейнера, а при ширине экрана меньше 600px происходит инициализация карусели, и мы вместо длинной простыни блоков на мобильном видим аккуратный слайдер с этими самыми блоками.
В моем примере я использую граничное значение 600px, чтобы результат точно отобразился внутри контента моего сайта, но для мобильных вы можете использовать breakpoint 768px или любое другое.
Пример слайдера owl carousel 2 с тремя слайдами:
Содержимое файла script.js
$(function() { // Owl Carousel var owl = $(".owl-carousel"); owl.owlCarousel({ items: 3, margin: 10, loop: true, nav: true }); });
Пример слайдера Owl Carousel 2 с тремя слайдами:
See the Pen Owl Carousel Base by Denis (@deniscreative) on CodePen.0
Чтобы задать кастомные стрелки, например, это нужно для какого-то конкретного слайдера по дизайну, добавляем: