Responsives, Touch-freundliches Karussell mit Flickity erstellen

Avatar of David DeSandro
David DeSandro am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Mittlerweile sollte jeder Artikel über Karussells mit dem Haftungsausschluss beginnen: _Sie brauchen vielleicht kein Karussell._ Karussells werden leicht missbraucht. Kyle Peatt hat mehr Details zur Karussell-Kontroverse.

Ein Teil der Schuld kann der Benutzererfahrung von Karussell-Plugins selbst zugeschrieben werden. Das Scrollen durch ein Karussell ist weniger befriedigend und umständlicher als das einfache Scrollen einer Seite nach unten. Grundsätzlich kann man nicht durch sie hindurchwischen. Drittanbieter-Bibliotheken sollten zumindest so nützlich sein wie das native Verhalten.

Zusätzlich zur Benutzerunfreundlichkeit weisen die meisten Karussell-Plugins viele entwicklerunfreundliche Schwachstellen auf. Da sie mit JavaScript konfiguriert werden, ist es oft schwierig, die Konfiguration für andere Breakpoints zu ändern. Diese Karussell-Bibliotheken können Entwickler daran hindern, responsiv zu gestalten.

Ich habe Flickity entwickelt, um beide Probleme zu lösen. Für Ihre Benutzer machen Flickitys Karussells Spaß zum Durchwischen. Flickity verwendet physikbasierte Animationen, sodass Ziehen und Wischen sich natürlich anfühlt. Für Sie sind Flickitys Karussells einfach zu implementieren. Flickity ist flexibel konzipiert und ermöglicht es Ihnen, Ihr eigenes CSS zu nutzen, um Ihre Karussells responsiv zu gestalten.

Flickity animated example

Flickity verwenden

Um Flickity zu verwenden, fügen Sie zuerst seine .css und .js Dateien zu Ihrer Seite oder Asset-Pipeline hinzu.

<head>
  <!-- other head stuff... -->
  <link rel="stylesheet" href="/path/to/flickity.css" media="screen">
</head>
<body>
  <!-- all your great html... -->
  <script src="/path/to/flickity.pkgd.min.js"></script>
</body>

Flickity funktioniert mit einem Container-Karussell oder Galerieelement mit einer Gruppe von Zellenlementen.

<div class="main-gallery">
  <div class="gallery-cell">...</div>
  <div class="gallery-cell">...</div>
  <div class="gallery-cell">...</div>
  ...
</div>

Sie können Flickity auf verschiedene Arten initialisieren. Sie können Flickity als jQuery-Plugin verwenden: $('selector').flickity().

$('.main-gallery').flickity({
  // options
  cellAlign: 'left',
  contain: true
});

Sie können Flickity mit Vanilla JS verwenden

var flkty = new Flickity( '.main-gallery', {
  // options
  cellAlign: 'left',
  contain: true
});

Sie können Flickity bequem in HTML initialisieren, ohne JavaScript schreiben zu müssen. Fügen Sie js-flickity zur Klasse des Galerieelements hinzu. Optionen können mit einem data-flickity-options Attribut in JSON gesetzt werden. Ich empfehle die Initialisierung mit HTML, wenn Sie keinen zusätzlichen Verhalten mit JS hinzufügen.

<div class="main-gallery js-flickity"
  data-flickity-options='{ "cellAlign": "left", "contain": true }'>

Flickity stylen

Sie können Zellen mit Ihrem eigenen CSS nach Belieben dimensionieren und stylen. Flickity stellt ein Container-Element bereit, damit Zellen mit prozentualen Breiten dimensioniert werden können — keine Größenkonfiguration in JS, nur normale % Werte, die Sie gewohnt sind. Die Höhe der Galerie wird auf die maximale Höhe der Zellen gesetzt.

Siehe den Pen Flickity – volle Breite Zellen von David DeSandro (@desandro) auf CodePen.

(Da die eingebetteten Pens in iframes sind, können Sie nicht außerhalb des Demo-Fensters ziehen. Aber das ist cool – das Ziehen funktioniert auf normalen Seiten.)

Da Zellen mit CSS dimensioniert und gestylt werden, können Sie Media Queries verwenden, um für verschiedene Breakpoints unterschiedliche Zellenzahlen anzuzeigen. Versuchen Sie, diesen Media Query Pen zu vergrößern/verkleinern, um ihn in Aktion zu sehen.

/* full width cells by default */
.gallery-cell {
  width: 100%;
}

@media screen and ( min-width: 768px ) {
  /* half-width cells for larger devices */
  .gallery-cell { width: 50%; }
}

Sogar die vorherigen & nächsten Schaltflächen und die Seitenpunkte sind gestaltbar.

Siehe den Pen Flickity – benutzerdefinierte Vorher/Nachher-Schaltfläche & Seitenpunkt-Stil von David DeSandro (@desandro) auf CodePen.

Flickity fügt der ausgewählten Zelle eine Klasse is-selected hinzu.

Siehe den Pen Flickity – is-selected Klasse von David DeSandro (@desandro) auf CodePen.

Sie können die Klasse is-selected verwenden, um beeindruckende Übergänge zu erzielen. Diese Bildgalerie dimmt und verpixelt benachbarte Zellen. Bilder werden mit flexiblen Box-CSS innerhalb der Zellen zentriert.

Siehe den Pen Flickity – Bildergalerie mit ausgewählter Stil von David DeSandro (@desandro) auf CodePen.

Das ist alles, was es braucht. Flickity erstellt Touch-freundliche, wischbare Karussells, die sich leicht mit CSS gestalten lassen. Alles andere ist die Feinabstimmung Ihrer Implementierung, um Ihrer Vision gerecht zu werden.

Flickity-Optionen

Flickity bietet mehrere weitere nützliche Funktionen, die über seine Optionen aktiviert werden. Hier sind ein paar meiner Favoriten.

wrapAround: true wickelt Zellen um zum anderen Ende, sodass Sie weiterwischen können, ohne ein Ende zu erreichen.

Siehe den Pen Flickity – wrapAround von David DeSandro (@desandro) auf CodePen.

freeScroll: true ermöglicht es, Zellen frei zu scrollen und zu wischen, ohne Zellen an einer Endposition auszurichten. Geben Sie diesem hier einen guten Wisch!

Siehe den Pen Flickity – freeScroll von David DeSandro (@desandro) auf CodePen.

Kombinieren Sie freeScroll und wrapAround und es fühlt sich an, als könnten Sie es für immer wischen, Mann.

Siehe den Pen Flickity – freeScroll, wrapAround von David DeSandro (@desandro) auf CodePen.

Sie können Layouts entwerfen, bei denen Flickity für einige Breakpoints aktiviert, für andere jedoch deaktiviert ist. Mit watchCSS: true überwacht Flickity den Inhalt von :after des Galerieelements. Flickity wird aktiviert, wenn der Inhalt von :afterflickity“ ist.

/* enable Flickity by default */
.gallery:after {
  content: 'flickity';
  display: none; /* hide :after */
}

@media screen and ( min-width: 768px ) {
  /* disable Flickity for large devices */
  .gallery:after {
    content: '';
  }
}

Versuchen Sie, den watchCSS Pen zu vergrößern/verkleinern, um ihn in Aktion zu sehen.

Dies ist eine ziemlich coole Funktion, da sie Ihnen das Schreiben von fehlerhaftem JavaScript beim Ändern der Fenstergröße erspart. Da die Aktivierung über CSS ausgelöst wird, bleiben Ihre Media-Query-Logiken an einem Ort.

Zusätzlich zu den Optionen bietet Flickity eine voll ausgestattete API mit nützlichen Methoden, Eigenschaften und Ereignissen. Flickitys API ermöglicht es Ihnen, auf seiner Basisfunktionalität aufzubauen, sodass es in Kombination mit anderen Widgets und Verhaltensweisen auf Ihrer Website verwendet werden kann.


Zugegeben, Sie brauchen vielleicht kein Karussell. Aber wenn doch, sollten Sie eines verwenden, das sowohl Ihren Benutzern als auch Ihnen selbst hilft. Flickity ist einfach zu implementieren und flexibel zu handhaben. Mit Flickity können Sie Karussells, Galerien und Slider erstellen, die sich nahtlos in Ihre Designs einfügen. Ich hoffe, Flickity befähigt Entwickler, Karussells zur Erstellung überzeugender Benutzererlebnisse zu nutzen. Wenn nichts anderes, macht es Spaß, sie durchzuwischen.