2015-01-31 11 views
10

Ich verwende derzeit das Owl Carousel, um eine Galerie auf Desktop/Laptop-Geräten anzuzeigen. Bei kleineren Geräten möchte ich jedoch das Plugin deaktivieren und jedes Bild übereinander anzeigen.Deaktivierung von Owl Carousel bei einer bestimmten Breite des Darstellungsbereichs

Ist das möglich? Ich bin mir bewusst, dass Sie Owl Carousel optimieren können, um eine bestimmte Anzahl von Bildern auf dem Bildschirm an bestimmten Haltepunkten zu zeigen. Aber ich möchte in der Lage sein, um es vollständig zu deaktivieren, entfernen Sie alle divs usw.

Hier ist ein Stift von dem, was ich gerade arbeite mit im Moment: 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 
}); 

Jede Hilfe wird wie immer dankbar angenommen!

+1

Bitte lesen Sie unbedingt die Tag-Beschreibungen. Hier geht es nicht um die Web Ontology Language ([tag: owl]), sondern um Owl Carousel ([tag: owl-carousel]). –

+0

Hallo, ich habe mit dem Code-Pen-Sample herumgespielt und konnte diese Bildelemente für ein mobiles Gerät hinzufügen. Das mobile Gerät funktioniert, wenn Sie die Browserbreite kleiner als 501 px Breite machen. Ich benutzte diese CSS3-Media-Abfrage-Dateien @media Bildschirm und (max-Breite: 500px) http://www.w3schools.com/cssref/css3_pr_mediaquery.asp Code-Stift http://codepen.io/jyrkim/pen/NPvQOe Ich bin neu in Owl Carousel, und wenn ich die Größe des Browsers ändere, erscheinen die Tasten immer noch in einer Mobiltelefonbreite. Aber ich hoffe, dass diese CSS3 Media Query-Dateien für Sie nützlich sind. – jyrkim

Antwort

0

Einfach, verwenden Sie jquery. Fügen Sie dem Container-div des Karussells eine Klasse hinzu, zum Beispiel "<div id="carousel class='is_hidden'>" mit einigen CSS, zum Beispiel ".is_hidden{display:none;}". Verwenden Sie dann jquery, um die Klasse zu entfernen, oder fügen Sie die Klasse je nach Fensterbreite hinzu.

+0

Hey danke für die Antwort ... würde diese Lösung nicht die ganze Galerie abschalten? –

+0

Es wird nur verstecken, nichts mehr. Wenn Sie die Klasse entfernen, erscheint sie einfach wieder auf dem Bildschirm. –

+0

Ich sehe, ich möchte die Galerie auf kleineren Geräten sichtbar halten. Ich möchte nur die Karussellfunktionalität deaktivieren. Ich nahm an, Sie könnten etwas zu JS hinzufügen, um das Eulenkarussell bei einer bestimmten Fensterbreite und darunter einfach auszuschalten. –

17

Ich musste Plugin deaktivieren, wenn die Bildschirmbreite größer als 854px ist. Sicher, Sie können den Code an Ihre Bedürfnisse anpassen. Hier ist meine Lösung:

  1. Überprüfen Sie die Darstellungsbreite vor Aufruf der Plugin.
  2. Wenn die Breite gut ist, um das Plugin aufzurufen, rufen Sie das Plugin auf. Else fügen Sie die Klasse 'off' hinzu, um anzuzeigen, dass das Plugin bereits aufgerufen und zerstört wurde.
  3. Bei der Größenänderung:
    3.1. Wenn die Breite gut ist, um das Plugin aufzurufen UND das Plugin wurde noch nicht aufgerufen oder es wurde früher zerstört (Ich benutze die 'off' Klasse, um es zu wissen), dann rufen Sie das Plugin.
    3.2. Wenn die Breite nicht gut ist, um das Plugin aufzurufen UND das Plugin jetzt aktiv ist, dann zerstöre es mit Owl's Triggerereignis destroy.owl.carousel und entferne das unnötige Wrapper-Element 'owl-stage-outer' danach.
$(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(); 
      } 
     } 
    }); 
}); 

Und ein bisschen CSS deaktiviert Owl Element zu zeigen:

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

Hallo ich habe ein Problem, wenn Sie in der mobilen Größe sind und Sie die Größe der Seite bis zu 854px ändern möchten ein Fehler "TypeError: this.e ist null" auftreten und Nummern dieses Fehlers erhöhen, wenn Sie das Fenster weiter vergrößern. Kannst du mir helfen, diesen Fehler zu beheben? –

+0

@hosseinghaem Hallo, könnten Sie bitte einen Link zu einem Testfall bereitstellen? – mcmimik

+0

Das funktioniert reibungslos. Vielen Dank. –

3

mcmimik's answer korrekt ist, aber ich hatte eine Änderung zu machen, es für mich zu arbeiten.

In der Funktion:

$(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(); 
     } 
    } 
}); 

auslagern owl.addClass('off').trigger('destroy.owl.carousel'); für 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

einfacher, eine CSS-basierte Lösung

@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; 
 
    } 
 
}

zu verwenden
+0

Das einzige Problem hier ist jedoch, dass das Karussell die JavaScript-Funktionen weiterhin ausführt und es daher nicht deaktiviert. Du wirst sie nur nicht sehen können. –