Glattes Karussell – Zwingen Sie die Rutschen dazu, dieselbe Höhe zu haben

Lesezeit: 5 Minuten

Benutzer-Avatar
JJaun

Ich habe Probleme mit dem Slick-Karussell-JS-Plugin mit mehreren SlidesToShow die unterschiedliche Höhen haben.

Ich brauche die Slides um die zu haben selbe Größeaber mit CSS Flex-Box funktioniert es nicht, da die Folien widersprüchliche CSS-Definitionen haben.

Auch in den Foren und im Internet habe ich nichts brauchbares gefunden.

HTML

<div class="slider">
  <div class="slide">
    <p>Lorem ipsum.</p>
  </div>
  <div class="slide">
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua</p>
  </div>
  <div class="slide">
    <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
  </div>
  <div class="slide">
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</p>
  </div>
</div>

JS

$('.slider')
.slick({
    autoplay: false,
    dots: false,
    infinite: false,
    arrows: false,
    slidesToShow: 2,
    slidesToScroll: 2,
    rows: 0
});

CSS

.slide {
  height: 100%;
  background-color: #ccc;
  padding: 10px;
}

  • Die als richtig markierte Lösung funktioniert nicht, wenn die Option „unendlich“ auf „true“ gesetzt ist.

    – Peky27

    23. Juni 2019 um 20:39 Uhr

Fügen Sie ein paar CSS-Stile hinzu und es ist fertig:

.slick-track
{
    display: flex !important;
}

.slick-slide
{
    height: inherit !important;
}

Genießen! 🙂

  • Groß! Dieser Code funktioniert wie ein Zauber mit der neuen Version (1.9.0).

    – Reza Mamun

    8. November 2018 um 15:01 Uhr

  • Funktioniert super. Ich habe einige zusätzliche Flex-Deklarationen für die 2D-Zentrierung von Bildern unterschiedlicher Größe hinzugefügt: .slick-track { display: flex !important; } .slick-slide { height: inherit !important; display: flex !important; justify-content: center; align-items: center; }

    – Stuart Cusack

    23. April 2019 um 15:25 Uhr


  • Dies ist eine viel einfachere Lösung. musste ich auch hinzufügen .slick-slide > div { height: 100%; } um das automatisch generierte div-Element zu berücksichtigen.

    – Lukas

    2. Juni 2019 um 8:30 Uhr

  • Das braucht jeder. +1

    – Nandesh

    24. September 2019 um 17:23 Uhr

  • In meinem Fall gab es zwei mehr divs zwischen den track und slide Klasse div. Damit es funktioniert, habe ich eingestellt height: 100% auch für sie, ähnlich wie @Luke sagte 🙂

    – João Vitor Veronese Vieira

    2. Juni 2021 um 20:26 Uhr

Ok Leute, ich habe eine einfache Lösung gefunden. Fügen Sie einfach ein hinzu Position setzen Callback-Funktion (feuert nach Positions-/Größenänderungen), die die Höhe der Folien auf die Höhe des Schiebereglers (slideTrack) setzt:

JS

$('.slider').slick({
    autoplay: false,
    dots: false,
    infinite: false,
    arrows: false,
    slidesToShow: 2,
    slidesToScroll: 2,
  rows: 0
})
.on('setPosition', function (event, slick) {
    slick.$slides.css('height', slick.$slideTrack.height() + 'px');
});

Vergessen Sie nicht, dass Ihre Folien die volle Höhe haben müssen:

CSS

.slide {
  height: 100%;
}

Hier ist ein kleines jsFiddle zur Demonstration:
https://jsfiddle.net/JJaun/o29a4q45/

  • Ich habe ein ähnliches Problem mit einem Karussell. Ich habe versucht, die anzuwenden setPosition Fix an meinem Skript, aber es bricht es einfach. Kannst du sehen, wo ich falsch liege? codepen.io/moy/pen/KBZbZL

    – Benutzer1406440

    30. Juli 2018 um 21:58 Uhr

  • Sie sollten diese Antwort aktualisieren, um zuerst die $slides-Höhe auf “auto” zu setzen. Andernfalls werden Ihre Höhenmessungen beim Ändern der Größe ungenau, da Ihre $slideTrack-Höhe deaktiviert ist, da die untergeordneten $slides eine feste Pixelhöhe haben.

    – jdbosley

    4. Oktober 2018 um 18:13 Uhr

  • Sie sollten die zu verwendende Antwort aktualisieren slick.$slideTrack.find('.slick-slide') da geklonte Elemente beim Übergang nicht dieselbe Höhe haben.

    – minar

    6. Dezember 2018 um 10:40 Uhr

Die js-Lösung von @JJaun ist nicht perfekt, da man die Höhe springen sieht, wenn man ein Hintergrundbild für die Slides verwendet. Das hat bei mir funktioniert:

.slick-track {
  display: flex !important;
}

.slick-slide {
  height: auto;
}

Benutzer-Avatar
jugendlicher Vampir

Wie oben beantwortet. Funktioniert gut auf Slick Slider

.slick-track
{
    display: flex !important;
}

.slick-slide
{
    height: inherit !important;
}

Aber ich habe ein Problem bei der Verwendung der Slick-Sync-Navigation

Einfach unter CSS einfügen, um es abzudecken.

.slick-slide {
    margin-bottom: 0;
    object-fit: cover;
}

Hier ist eine reine SCSS-Lösung, wenn Sie damit einverstanden sind object-fit:

.slick {
  .slick-track {
    display: flex;

    .slick-slide {
      display: flex;
      height: auto;

      img {
        height: 100%;
        object-fit: cover;
        object-position: center;
      }
    }
  }
}

Benutzer-Avatar
Okan Kocyigit

Ich habe eine andere reine CSS-Lösung. Sie können schwebende Elemente mit überschreiben table/table-cell.

$(function() {
  $('.slider')
    .slick({
      autoplay: false,
      dots: false,
      infinite: false,
      arrows: false,
      slidesToShow: 2,
      slidesToScroll: 2,
      rows: 0
    });
})
.slide {
  background-color: #ccc;
  padding: 10px;
  display: table-cell !important;
  float: none !important;
}

.slick-track {
  display: table !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>


<div class="slider">
  <div class="slide">
    <p>Lorem ipsum.</p>
  </div>
  <div class="slide">
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua</p>
  </div>
  <div class="slide">
    <p>At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</p>
  </div>
  <div class="slide">
    <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr.</p>
  </div>
</div>

Benutzer-Avatar
Jazz Macedo

Für zukünftige Suchen:

Sie können einfach verwenden:

$('.slick').slick({ 
      /* your config */ 
 }).on('setPosition', function (event, slick) {
      slick.$slides.css('height', slick.$slideTrack.height() + 'px');
 });

1091360cookie-checkGlattes Karussell – Zwingen Sie die Rutschen dazu, dieselbe Höhe zu haben

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

Privacy policy