Slick-Karussell ändert die Größe nicht

Lesezeit: 6 Minuten

Benutzer-Avatar
Gabriel Bonifacio

Ich verwende Slick.js Karussell auf einer WordPress-Site, die ich entwickle. Wenn ich die Größe des Browserfensters verändere, passen die Karussells nicht hinein, was dazu führt, dass horizontale Bildlaufleisten angezeigt werden. Wenn ich Slick nicht starte, wird die Größe der Bilder entsprechend angepasst, wie Sie es in einem flüssigen Layout erwarten würden.

Slick fügt einige Inline-Stile dynamisch ein, und einer davon ist die Breite. Sie können die Breite aller untergeordneten Divs des Karussells sehen:
Glatte Inline-Stile

Das normale Verhalten von Slick besteht darin, diese Breiten zu aktualisieren, wenn Sie die Größe des Fensters ändern, aber aus irgendeinem Grund wird dies auf dieser Site nicht passieren.

Hier ist der Link zur Webseite: http://smart.trippple.com.br/

Die Homepage hat zwei Karussells, die sich an diesen Positionen befinden:

  1. main #slider-home .container .slider-session
  2. main #seguradoras .container #seguradoras-carrousel .slider-session

So initiiere ich das Skript:

  $('#slider-home .slider-session').slick({
    autoplay: true,
    autoplaySpeed: 5000,
    arrows: false,
    fade: true,
    slidesToScroll: 1,
    slidesToShow: 1,
    speed: 1000
  });

  $('#seguradoras-carrousel .slider-session').slick({
    autoplay: true,
    autoplaySpeed: 2000,
    arrows: false,
    centerMode: true,
    mobileFirst: true,
    pauseOnHover: false,
    slidesToShow: 4
  });

Und hier ist alles, was ich bisher versucht habe:

  • Alle Skripte außer jQuery und Slick deaktiviert, um sicherzustellen, dass kein Konflikt stattfindet;
  • Getestet verschiedene Versionen von jQuery;
  • Versucht, einschließlich jQuery Migrate;
  • Versucht, jQuery + Slick in den Header der Website zu laden;
  • Versucht, die Karussells aus dem Container zu entfernen;
  • Ich habe versucht, eine Breite und eine maximale Breite für das Karussell-Div in meinem Stylesheet festzulegen.
  • Versucht, die Größenänderungsmethode von Slick zu verwenden:

    $(window).resize(function() { $(‘#slider-home .slider-session’).slick(‘resize’); });

  • Überall recherchieren und sogar ein Problem auf der Github-Seite des Plugins öffnen. Der Plugin-Autor antwortete, dass das Skript definitiv die Größe ändert und das Problem in meiner Umgebung liegt, und er hat Recht. Ich habe zum Testen eine statische HTML-Seite erstellt, und das Karussell reagierte zu 100 %. Es gibt etwas auf dieser Website, das das normale Verhalten des Skripts verhindert.

Übrigens werden die Stylesheets von Slick nicht verlinkt, da ich sie in das Haupt-Stylesheet der Site eingebettet habe.

Jede Hilfe ist sehr willkommen! Ich versuche, das mindestens zwei Wochen lang zu lösen, und ich weiß nicht, was ich sonst noch versuchen soll. Alle Ideen sind willkommen. Vielen Dank!

  • Ich habe diesen Fehler auf Ihrer Website erhalten, der auf der Konsole angezeigt wird. “Netzwerkfehler: 404 nicht gefunden – smart.trippple.com.br/img/ajax-loader.gif?1462523748

    – Technik

    3. August 2016 um 23:48 Uhr


  • Ich bin auch auf diesen Fehler gestoßen, aber es scheint nicht damit zusammenzuhängen. Ich habe es auf meinem lokalen Server behoben und vergessen, es in die Testumgebung hochzuladen. Ich habe es jetzt jedenfalls getan. Vielen Dank!

    – Gabriel Bonifacio

    4. August 2016 um 0:07 Uhr

  • Ich hatte ein ähnliches Problem und es stellte sich heraus, dass es durch das Element über meinem Karussell verursacht wurde, das an einem bestimmten Haltepunkt einen negativen Rand unten hatte (daher das Karussell überlappte). Dies schien die Berechnung beim Ändern der Fenstergröße zu stören. Nachdem ich den negativen Rand entfernt hatte, funktionierte es perfekt.

    – LifeOnLars

    22. Dezember 2016 um 9:25 Uhr

  • Ich habe auch das gleiche Problem – wäre gut zu wissen, ob Sie eine Lösung gefunden haben.

    – Helly

    7. Juli 2017 um 15:08 Uhr

  • @GabrielBonifacio danke, dass du dich bei mir gemeldet hast! iirc für mich stellte sich heraus, dass das Problem ein Wrapper mit display:flex war – obwohl es schon eine Weile her ist.

    – Helly

    6. November 2017 um 8:37 Uhr

Benutzer-Avatar
Tasse

hast du mal die responsive Option von Slicks ausprobiert? Ich weiß nicht, ob dies die Antwort ist, nach der Sie suchen, aber das ist, was ich tue, damit mein Schieberegler basierend auf der Größenänderung des Browsers funktioniert.

$('#seguradoras-carrousel .slider-session').slick({
    autoplay: true,
    autoplaySpeed: 2000,
    arrows: false,
    centerMode: true,
    mobileFirst: true,
    pauseOnHover: false,
    slidesToShow: 4,
    //start responsive option
    responsive: [
    {
      breakpoint: 600, //at 600px wide, only 2 slides will show
      settings: {
        slidesToShow: 2,
        slidesToScroll: 2
      }
    },
    {
      breakpoint: 480, //at 480px wide, only one slide will show
      settings: {
        slidesToShow: 1,
        slidesToScroll: 1
      }
    }
    ]
});

Aktualisiert, um an der Größenänderung statt an der Aktualisierung zu arbeiten

Sie benötigen zwei Funktionen, eine Größenänderungsfunktion und eine Slick-Funktion

jQuery(window).on('resize', function() {

  clearTimeout(resizeTimerInternal)

  resizeTimerInternal = setTimeout(function() {
    //add functions here to fire on resize
    slickSliderWithResize();
  }, 100)

});


function slickSliderWithResize() {
  if (jQuery(window).width() < 1150) {
    if(jQuery('.slick-slider-wrapper').hasClass('slick-initialized')) {

    }
    else {
      jQuery('.slick-slider-wrapper').slick({
        // slick options
      });
    }
  } else {
    if(jQuery('.slick-slider-wrapper').hasClass('slick-initialized')) {
      jQuery('.slick-slider-wrapper').slick("unslick");
    }
  }
}
slickSliderWithResize();

Dies sollte bei der Größenänderung funktionieren, aber Sie müssen es ein wenig bearbeiten, damit es zu Ihrem Schieberegler passt. den Namen des Slider-Containers (ich habe ihn gerade Slick-Slider-Wrapper genannt), die Slick-Optionen und die Größe, in der er zerlegt werden soll (ich habe ihn auf weniger als 1150 Pixel eingestellt).

  • Sieht auch so aus, als müssten Sie Ihre Container reaktionsfähig machen, z. B. bei einer maximalen Breite von 1199 ändern Sie Ihre Containerbreite auf einen Prozentsatz anstelle von px.

    – Tasse

    3. August 2016 um 23:42 Uhr

  • Ich habe es tatsächlich versucht, ja. Wenn ich das tue, ändert Slick nur die Anzahl der angezeigten Folien, aber die Breite bleibt gleich (und damit auch die Bildlaufleisten). Der Container ist responsiv – ich verwende Susy. Wenn Sie auf eine andere Seite ohne Karussells zugreifen (z. smart.trippple.com.br/quem-somos), Sie werden sehen, alles passt sich perfekt an. Danke für deine Antwort!

    – Gabriel Bonifacio

    3. August 2016 um 23:59 Uhr


  • @cup_of Es funktioniert nicht bei der Größenänderung des Browsers. Es funktioniert nur, wenn ich den Browser neu lade, nachdem ich die Größe geändert habe.

    – Athi

    31. August 2018 um 9:20 Uhr


Benutzer-Avatar
VALLEE David

$('#slick-slider').slick('setDimensions');

Funktioniert für mich, nachdem die Größe geändert oder ein versteckter Schieberegler angezeigt wurde.

Diese Methode ist in der offiziellen Dokumentation nicht verfügbar.

  • Für mich $('#slick-slider').slick('resize'); gefolgt von der oben funktionierte richtig

    – Kunal

    25. Oktober 2019 um 23:12 Uhr

Wenn Sie Slick zwingen, die Größe bei der Fenstergröße zu ändern, würde dies vielleicht passen:

$(window).resize(function() {
  $('#slider-home .slider-session').slick('resize');
  $('#seguradoras-carrousel .slider-session').slick('resize');
});

  • Ja, @technico, das habe ich auch probiert und vergessen zu erwähnen! Es hat auch nicht funktioniert. Ich werde meine Frage aktualisieren. Danke für deine Antwort!

    – Gabriel Bonifacio

    4. August 2016 um 0:01 Uhr

  • Dies funktionierte bei mir bei einem ähnlichen Problem: Ich habe einen vertikalen Schieberegler zerstört und neu erstellt, aber er hat nicht die richtige Höhe erreicht, bis ich ihn verwendet habe $('.slide').slick('resize')die ich in den Online-Dokumenten nicht gefunden habe.

    – Giorgio Tempesta

    23. Januar 2018 um 9:47 Uhr

In meinem Fall fehlte mir tatsächlich die Bildstreckung

.slick-slide img {width: 100%;}

Benutzer-Avatar
laviku

Ich hatte vor kurzem das gleiche Problem und habe es so gelöst. Zerstören Sie beim Größen- oder Ausrichtungsänderungsereignis des Fensters den Slick und erstellen Sie ihn erneut.

var slickOptions = {
    arrows: false,
    dots: true,
    adaptiveHeight: true,
    mobileFirst: true
};

$('.slick-element').slick(slickOptions);

$(window).on('resize orientationchange', function() {
    $('.slick-element').slick('unslick');
    $('.slick-element').slick(slickOptions);
});

Benutzer-Avatar
Leticia Gomes

$(‘#slick-slider’).slick(‘setDimensions’);

mit $(‘#slick-slider’).slick(‘setPosition’);

Funktioniert bei mir

1383040cookie-checkSlick-Karussell ändert die Größe nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy