Отключение Карусели совы при определенной ширине окна просмотра

В настоящее время я использую Owl Carousel для показа галереи на устройствах для настольных компьютеров и ноутбуков. Однако на более мелких устройствах я хотел бы отключить плагин и показать каждое изображение, сложенное под ним.

Возможно ли это? Я знаю, что вы можете настроить Owl Carousel, чтобы показать определенное количество изображений на экране в определенных точках останова. Но я хотел бы полностью отключить его, удалив все div и т.д.

Вот ручка того, с чем я сейчас работаю: http://codepen.io/abbasinho/pen/razXdN

HTML:

<div id="carousel">
  <div class="carousel-item" style="background-image: url(http://owlgraphic.com/owlcarousel/demos/assets/owl1.jpg);">
  </div>
  <div class="carousel-item" style="background-image: url(http://owlgraphic.com/owlcarousel/demos/assets/owl2.jpg);">
  </div>
  <div class="carousel-item" style="background-image: url(http://owlgraphic.com/owlcarousel/demos/assets/owl3.jpg);">
  </div>
</div>

CSS

#carousel {
  width: 100%;
  height: 500px;
}

.carousel-item {
  width: 100%;
  height: 500px;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
}

JQuery

$("#carousel").owlCarousel({
      navigation : true,
      slideSpeed : 300,
      paginationSpeed : 400,
      singleItem: true
});

Любая помощь с благодарностью принимается как всегда!

Ответ 1

Мне пришлось отключить плагин, если ширина экрана больше 854px. Конечно, вы можете изменить код в соответствии с вашими потребностями. Вот мое решение:

  • Проверить ширину окна просмотра перед вызовом плагина.
  • Если ширина хороша для вызова плагина, вызовите плагин. Else добавьте класс 'off', чтобы показать, как будто плагин уже вызван и уничтожен.
  • При изменении размера:
    3.1. Если ширина хороша для вызова плагина И плагин еще не был вызван или он был уничтожен раньше (я использую класс 'off', чтобы его узнать), THEN вызовите плагин.
    3.2. если ширина не подходит для вызова плагина И теперь активен плагин, THEN уничтожит его с событием триггера сова destroy.owl.carousel и удалит ненужный элемент-оболочку 'owl-stage-outer' после него.
$(function() {
    var owl = $('.owl-carousel'),
        owlOptions = {
            loop: false,
            margin: 10,
            responsive: {
                0: {
                    items: 2
                }
            }
        };

    if ( $(window).width() < 854 ) {
        var owlActive = owl.owlCarousel(owlOptions);
    } else {
        owl.addClass('off');
    }

    $(window).resize(function() {
        if ( $(window).width() < 854 ) {
            if ( $('.owl-carousel').hasClass('off') ) {
                var owlActive = owl.owlCarousel(owlOptions);
                owl.removeClass('off');
            }
        } else {
            if ( !$('.owl-carousel').hasClass('off') ) {
                owl.addClass('off').trigger('destroy.owl.carousel');
                owl.find('.owl-stage-outer').children(':eq(0)').unwrap();
            }
        }
    });
});

И немного CSS, чтобы показать отключенный элемент Owl:

.owl-carousel.off {
    display: block;
}

Ответ 2

mcmimik answer является правильным, но мне пришлось сделать одно изменение, чтобы он работал у меня.

В функции:

    $(window).resize(function () {
    if ($(window).width() < 641) {
        if ($('.owl-carousel').hasClass('off')) {
            var owlActive = owl.owlCarousel(owlOptions);
            owl.removeClass('off');
        }
    } else {
        if (!$('.owl-carousel').hasClass('off')) {
             owl.addClass('off').trigger('destroy.owl.carousel');
            owl.find('.owl-stage-outer').children(':eq(0)').unwrap();
        }
    }
});

Смените owl.addClass('off').trigger('destroy.owl.carousel'); на owl.addClass('off').data("owlCarousel").destroy();:

    $(window).resize(function () {
    if ($(window).width() < 641) {
        if ($('.owl-carousel').hasClass('off')) {
            var owlActive = owl.owlCarousel(owlOptions);
            owl.removeClass('off');
        }
    } else {
        if (!$('.owl-carousel').hasClass('off')) {
            owl.addClass('off').data("owlCarousel").destroy();
            owl.find('.owl-stage-outer').children(':eq(0)').unwrap();
        }
    }
});

Ответ 3

Легче использовать решение на основе CSS

@media screen and (max-width: 992px) {
  .owl-item.cloned{
    display: none !important;
  }
  .owl-stage{
    transform:none !important;
    transition: none !important;
    width: auto !important;
  }
  .owl-item{
    width: auto !important;
  }
}

Ответ 4

Простой, используйте jquery. Добавьте класс в div div карусели, например "<div id="carousel class='is_hidden'>" с некоторым css, например ".is_hidden{display:none;}". Затем используйте jquery для удаления класса или добавления класса в зависимости от ширины окна.