In einem früheren Beitrag habe ich Ihnen gezeigt, wie Sie mit slick.js eine benutzerdefinierte Bildergalerie erstellen. Heute beschreibe ich den Prozess der Erstellung eines animierten, reaktionsfähigen Vollbild-Karussell-Schiebereglers mit owl.js (oder „Eulenkarussell“)..
Um eine erste Vorstellung von dem, was wir bauen, zu bekommen, werfen Sie einen Blick auf die zugehörige CodePen-Demo (sehen Sie sich die größere Version für ein besseres Erlebnis an):
Owl.js ist ein beliebtes jQuery-Plugin, das von David Deutch erstellt wurde und mit dem Sie attraktive, ansprechende Karussells erstellen können. Sehen Sie sich die Demos an, um besser zu verstehen, was Ihnen dieses Plugin bieten kann.
Zum Glück hat es eine großartige Browserunterstützung, die auf folgenden Geräten getestet wurde:
Für weitere Details sehen Sie sich die Dokumentation an.
Um mit owl zu beginnen, laden Sie zunächst die folgenden Dateien in Ihr Projekt herunter und installieren Sie sie:
owl.carousel.css
oder seine reduzierte Versionowl.carousel.js
oder seine reduzierte VersionOptional möchten Sie möglicherweise das importieren owl.theme.default.css
Datei.
Sie können eine Kopie der entsprechenden Eulendateien abrufen, indem Sie das Github-Repo besuchen, einen Paketmanager verwenden (z. B. npm) oder die erforderlichen Assets über ein CDN (z. B. cdnjs) laden. Für dieses Tutorial wähle ich die letzte Option.
Für die Zwecke dieses Tutorials habe ich neben den Eulendateien auch Babel und Bootstrap 4 integriert.
In diesem Sinne, wenn Sie unter die schauen die Einstellungen In unserem Demo-Stift sehen Sie, dass ich drei externe CSS-Dateien und zwei externe JavaScript-Dateien enthalten habe.
Um loszulegen, definieren wir ein Karussell mit drei Folien. Jede dieser Folien enthält einen Titel, einen Untertitel und eine Aktionsschaltfläche.
Hier ist die erforderliche Struktur für unsere Demoseite:
Zwei Dinge sollten an dieser Stelle erwähnt werden:
Lassen Sie uns mit dem HTML-Code die CSS-Stile betrachten, die wir auf unsere Seite anwenden werden. Der Einfachheit halber behandeln wir nur einen Teil der verfügbaren Stile.
Zunächst definieren wir zwei benutzerdefinierte Eigenschaften und zwei Hilfsklassen:
: Wurzel - Hauptfarbe Weiß: Weiß; - Hauptschwarz-Farbe: Schwarz; .static Position: statisch; .cover Hintergrundgröße: Abdeckung; Hintergrundposition: Mitte; Hintergrundwiederholung: keine Wiederholung;
Als Nächstes geben wir Stile für die Karussellfolien an, einschließlich der Übergänge:
.Eulen-Karussell-Schieber Position: relativ; Höhe: 100 Vh; Hintergrundfarbe: Hellgrau; .owl-carousel .owl-slide-animated transform: translateX (20px); Deckkraft: 0; Sichtbarkeit: versteckt; Übergang: alle 0,05s; .owl-carousel .owl-slide-animated.is-umwandelt transform: none; Deckkraft: 1; Sichtbarkeit: sichtbar; Übergang: alle 0,5 s; .owl-carousel .owl-slide-title.is-übergeht Übergangsverzögerung: 0.2s; .owl-carousel .owl-slide-subtitle.is-Übergang Übergangsverzögerung: 0,35s; .owl-carousel .owl-slide-cta. wird umgeschaltet Übergangsverzögerung: 0,5 s;
Zum Schluss legen wir einige Regeln für die Navigationsmethoden fest:
.Eulen-Karussell .owl-Punkte, .owl-Karussell .owl-nav Position: absolut; .owl-carousel .owl-dots .owl-dot span background: transparent; Rand: 1px Volltonfarbe (- Hauptfarbe Schwarz); Übergang: alle 0,2s Leichtigkeit; .owl-carousel .owl-dots .owl-dot: hover-Spanne, .owl-carousel-.owl-dots .owl-dot.active span background: var (- main-black-color); .owl-carousel .owl-nav left: 50%; Top 10%; transform: translateX (-50%); Marge: 0;
Hinweis: Die Folien sollten die volle Fensterhöhe abdecken und wir geben sie daher Höhe: 100 Vh
. Da dieses Gerät jedoch für einige Geräte (z. B. iOS-Geräte) inkonsistent ist, können Sie die Höhe der Folien mit JavaScript einstellen (weitere Informationen finden Sie im JavaScript-Bedienfeld der Demo)..
An dieser Stelle können wir uns dem JavaScript widmen.
Als ersten Schritt initialisieren wir das Karussell. Standardmäßig bietet das Plugin „Punktnavigation“, unser Karussell enthält jedoch auch Navigationspfeile.
Eulen-NavigationsoptionenWir aktivieren die Navigationsoption über die nav
Konfigurationseigenschaft. Außerdem definieren wir dank des Symbols einige benutzerdefinierte SVGs als Pfeile navText
Konfigurationseigenschaft.
Der Code, der das Karussell auslöst, ist unten dargestellt:
const $ owlCarousel = $ (". owl-carousel"). owlCarousel (items: 1, loop: true, nav: true, navText: ['','']);
Als nächsten Schritt animieren wir den Inhalt jeder Folie. Dieses Verhalten wird durch die behandelt geändert
Ereignis, das die Eule bietet.
Hier ist der zugehörige Code:
$ owlCarousel.on ("changed.owl.carousel", e => $ (". owl-slide-animated"). removeClass ("is-transitioned"); const $ currentOwlItem = $ (". owl-item") ) .eq (e.item.index); $ currentOwlItem.find (". owl-slide-animated"). addClass ("is-transitioned"););
Jedes Mal, wenn wir eine neue Folie besuchen, verschwindet zunächst der Inhalt aller Folien. Dann erscheint der Inhalt der aktuellen Folie mit einer schönen Slide-In-Animation.
Hinweis: anstatt der geändert
Event hätten wir auch gleich nutzen können übersetzt
Veranstaltung.
Bisher haben wir gesehen, wie die Animationen ausgelöst werden, während wir durch die Folien blättern. Wir möchten diese Art von Animation jedoch auch, wenn das Karussell anfangs geladen wird. Um diese Funktionalität zu implementieren, verwenden wir die initialisiert
Veranstaltung.
Hier ist der Code für dieses Ereignis:
/ * Sie müssen das initialisierte Ereignis vor der Initialisierung der Eule binden (siehe Demo) * / $ (". owl-carousel"). on ("initialized.owl.carousel"), () => setTimeout (()) => $ (".owl-item.active .owl-slide-animated"). addClass ("is-transitioned");, 200););
Innerhalb dieses Ereignisses fügen wir die wird umgestellt
Klasse zu den Elementen der ersten Folie.
Es ist wichtig zu wissen, dass dieses Ereignis vor der Initialisierung des Karussells angehängt werden muss.
Bevor wir weitermachen, wollen wir eine knifflige Sache behandeln. Wenn Sie sich die Demo-Seite ansehen, sehen Sie, dass es eine Sektion
Element unterhalb des Karussells definiert. Bis zum Laden des Karussells wird standardmäßig der Abschnittsinhalt angezeigt, und auf unserer Seite wird ein kleiner Sprung ausgeführt.
Es gibt zwei Möglichkeiten, dieses unerwünschte Verhalten zu beheben. Zuerst können wir einen Preloader hinzufügen (das haben wir bereits in dem Slick-Tutorial getan). Eine zweite Option, die wir hier implementieren, ist das Ausblenden von Sektion
und zeigen Sie es, sobald das Karussell initialisiert ist.
In Bezug auf den Code wird folgende CSS-Regel benötigt:
Abschnitt Anzeige: keine;
Und der JavaScript-Code:
$ (". owl-carousel"). on ("initialized.owl.carousel"), () => setTimeout (()) => // anderer Code hier $ ("section"). show ();, 200););
Als letztes müssen wir die Punktnavigation positionieren. Standardmäßig ist es absolut positioniert. Folgendes sollte passieren:
.Eulen-Dia-Text
Element der Zielfolie. Die Funktion, die ausgeführt wird und die gewünschte Position für unsere Punkte festlegt, ist die setOwlDotsPosition
.
Hier ist diese Funktion:
function setOwlDotsPosition () const $ target = $ (". owl-item.active .owl-slide-text"); doDotsCalculations ($ target);
Dies isoliert das .Eulen-Dia-Text
Element der aktiven Folie und übergibt es als Argument an die doDotsCalculations
Unterfunktion.
Hier ist diese Unterfunktion:
function doDotsCalculations (el) const height = el.height (); const oben links = el.position (); const res = Höhe + Spitze + 20; $ (". owl-carousel .owl-dots"). css (top: '$ res px', links: '$ left px');
Innerhalb dieser Funktion setzen wir das passende oben
und links
Werte der .Eulenpunkte
Element basierend auf der Höhe und Position des Zielelements.
Wenn Sie einen Schritt weiter gehen, sollte die Position der Punkte aktualisiert werden, wenn Sie die Größe des Browser-Fensters ändern. Um dies zu erreichen, nutzen wir die Größe ändern
Eulenereignis.
Hier ist der notwendige Code:
$ owlCarousel.on ("resize.owl.carousel"), () => setTimeout (() => setOwlDotsPosition ();, 50););
Wenn Sie durch die Folien navigieren, müssen die Punkte in Abhängigkeit von der Höhe und Position des Inhalts der aktiven Folie neu positioniert werden. Danke an die geändert
Auch hier können wir diese neue Anforderung lösen.
Hier ist der zugehörige Code:
$ owlCarousel.on ("changed.owl.carousel"), e => // anderer Code hier const $ currentOwlItem = $ (". owl-item"). eq (e.item.index); const $ target = $ currentOwlItem.find (". owl-slide-text"); doDotsCalculations ($ target););
Bevor wir schließen, sollten wir einen verbreiteten Eulenfehler besprechen. Wenn wir den Abschnitt entfernen, der unter dem Karussell liegt, verschwindet die vertikale Bildlaufleiste undEin Teil der benachbarten Folie wird angezeigt.
Um dies zu beheben, lösen wir das aus Aktualisierung
Ereignis nach der Karussellinitialisierung wie folgt: $ owlCarousel.trigger ("refresh.owl.carousel");
Die Demo sollte in allen aktuellen Browsern gut funktionieren und Sie können sie in Ihren Projekten sicher verwenden. Hier ist eine Erinnerung an das, was wir gebaut haben:
In diesem umfassenden Tutorial haben wir es geschafft, mit owl.js einen animierten Vollbild-Karussell-Schieberegler zu erstellen. Hoffentlich haben Sie einige neue Fähigkeiten erworben, die Sie in Ihren anstehenden Projekten in die Praxis umsetzen können. Wenn Sie Fragen haben, lassen Sie es mich wie folgt wissen.