Die perfekte Lightbox? Verwenden von PhotoSwipe mit jQuery

Ich bin kürzlich auf eine JavaScript-Bibliothek namens PhotoSwipe gestoßen, und ich bin wirklich beeindruckt. Es ist eine brillante Bibliothek, die ein Bild oder eine Gruppe von Bildern auf Ihrer aktuellen Seite überlagert, ein Effekt, der allgemein als bekannt ist Leuchtkasten. PhotoSwipe wird derzeit von Dmitry Semenov entwickelt - er hat es letztes Jahr umgebaut, als er das Projekt übernahm. Verbesserungen umfassen:

  • Modular: PhotoSwipe ist in mehrere Module integriert, mit denen Sie bestimmte Funktionen, die Sie nicht benötigen, auflösen können. Dadurch bleibt die Bibliothek sehr leicht.
  • Responsiv: ein unverzichtbares Merkmal unter allen Umständen. Photoswipe liefert die entsprechende Bildgröße basierend auf dem aktuellen Ansichtsfenster.
  • Berühren Sie die Geste: PhotoSwipe unterstützt einige Berührungsgesten, mit denen Benutzer über Tap and Pinch interagieren und Popup-, Zoom- und Schließfunktionen anzeigen können.

Der einzige Nachteil ist, dass PhotoSwipe nicht aus der Box läuft. Wie der Entwickler feststellt:

„PhotoSwipe ist für Endbenutzer einfach und schnell gemacht, nicht für Entwickler. Es ist kein einfaches jQuery-Plugin. Zur Installation sind mindestens grundlegende JavaScript-Kenntnisse erforderlich.

Es kann jedoch in Verbindung mit anderen Bibliotheken verwendet werden. In diesem Lernprogramm wird beschrieben, wie PhotoSwipe mit jQuery verwendet wird. Wir machen den gesamten Prozess leicht verständlich, auch wenn Sie sich mit reinem JavaScript nicht auskennen.

Lass uns einen Anfang machen.

1. Erste Schritte

Wir beginnen mit:

  1. Erstellen der Projektverzeichnisse.
  2. HTML-Dokument erstellen.
  3. Verknüpfung zu jQuery. In diesem Tutorial werde ich jQuery 2.0 verwenden, daher nur moderne Browser unterstützen.
  4. Besorgen Sie sich die Kopien der PhotoSwipe-Bibliothek, die die Dateien enthält: photoswipe.min.jsphotoswipe-ui-default.min.js (der Code, der die PhotoSwipe-Benutzeroberfläche erstellt), default-skin.cssdefault-skin.pngdefault-skin.svg, undpreloader.gif.
  5. Ordnen Sie die Dateien in Ihrer bevorzugten Verzeichnisreihenfolge an und verknüpfen Sie sie in der HTML-Datei.

2. Strukturierung des HTML

Die HTML-Struktur ist der wichtigste Teil, da sie letztendlich das Schreiben von JavaScript beeinflussen wird. Hier nehmen wir an, dass wir ein paar Bilder haben, wie folgt:

Strand

Datenattribute

Neben der Klasse und den Schema-Attributen (die bei SEO hilfreich sind) haben wir auch ein hinzugefügt Daten-* Attribut im Ankertag, der das Bild umschließt. Dies speichert die volle Größe (Breite x Höhe) des Bildes.

Mehr Markup

Jetzt fügen wir das Markup hinzu, mit dem PhotoSwipe die vollständigen Bilder überlagert. Fügen Sie dies kurz vor dem schließenden Body-Tag hinzu, .

 

Wir haben alles mit HTML zu tun, also können wir jetzt mit dem JavaScript fortfahren. Wie erwähnt werden wir jQuery verwenden.

3. jQuery

Unsere Bilder sind in einem gruppiert div mit dem Bild Klasse. Es können mehrere weitere Bildgruppen auf der Seite vorhanden sein, daher werden alle durchlaufen .Bild Element.

$ ('. picture'). each (function () ); 

Einzelheiten

Bei PhotoSwipe müssen wir die vollständige Bildquelle zusammen mit ihrer Größe angeben. Um dies zu gewährleisten, erstellen wir eine Funktion, die das Ankertag durchläuft, um diese Details wie folgt abzurufen:

$ ('. picture'). each (function () var $ pic = $ (this), getItems = function () var items = []; $ pic.find ('a'). each (function ()) var $ href = $ (this) .attr ('href'), $ size = $ (this) .data ('size'). split ('x'), $ width = $ size [0], $ height = $ size [1]; var item = src: $ href, w: $ width, h: $ height items.push (item);); Elemente zurückgeben; var items = getItems ();); 

Lassen Sie uns die folgenden Code-Downs in mehrere Teile aufteilen:

  1. Wir initialisieren zunächst mit einem leeren Array in items = [].
  2. Dann durchlaufen wir jedes Ankertag mit dem .jeder() Methode.
  3. $ href = $ (this) .attr ('href') erhält den Wert in der href Attribut, das den Pfad des vollständigen Bildes speichert.
  4. $ size = $ (this) .data ('size'). split ('x') erhält den Wert von Datengröße Attribut durch die jQuery .Daten() Methode. Wir benutzen dann die Teilt()Methode, um den Wert zu trennen.
  5. Wir können den Wert der Breite und der Höhe separat ermitteln mit: $ width = $ size [0] und $ height = $ size [1].
  6. Verwendung der drücken() Methode sammeln wir alle diese Informationen in einem Array.

Testen Sie in der Konsole

Nun haben wir die Bildquelle und die Bildgröße im gespeichert Artikel Variable. Zur Überprüfung können Sie die Variable über die console.log () und Sie sollten die folgende Datenstruktur in den DevTools finden.

Klicken

Als nächstes binden wir das Zahl Element mit der klicken erstellen Sie eine PhotoSwipe-Instanz, übergeben Sie die Artikel zusammen mit den Konfigurationsoptionen und schließlich PhotoSwipe initialisieren.

var $ pswp = $ ('. pswp') [0]; $ pic.on ('click', 'figure', Funktion (Ereignis) event.preventDefault (); var $ index = $ (this) .index (); var options = index: $ index, bgOpacity: 0.7, showHideOpacity: true // Initialisieren Sie PhotoSwipe var lightBox = new PhotoSwipe ($ pswp, PhotoSwipeUI_Default, Elemente, Optionen); lightBox.init ();); 

Der Grund, warum wir das verwenden Zahl Das Element, auf das Sie klicken, und nicht das Ankertag, ist so, dass wir den Index (oder die nachfolgende Reihenfolge) problemlos abrufen können. Dadurch können wir PhotoSwipe über den korrekten Index informieren, um das entsprechende Bild zu überlagern.

Fazit

Wir haben PhotoSwipe gerade mit jQuery implementiert. Der Code ist vergleichsweise schlanker und verständlicher als in Vanilla-JavaScript geschrieben. 

Nun können Sie PhotoSwipe mit einer Handvoll Optionen anpassen und sogar das Bild vorladen, so dass Sie sofort das gesamte Bild sehen, wenn Sie darauf klicken. Ich werde die Stile Ihrer Fantasie überlassen, da es keine strengen Regeln dafür gibt.

Ich hoffe, Sie haben etwas aus diesem Tutorial gelernt und finden es manchmal nützlich. Vergessen Sie nicht, die Live-Demo zu überprüfen und Fragen oder Gedanken in den Kommentaren zu hinterlassen!

Weitere Ressourcen

  • Erste Schritte mit PhotoSwipe
  • Responsive Bilder mit PhotoSwipe
  • 30 Tage, um jQuery zu lernen
  • Alles, was Sie über das HTML5-Datenattribut wissen müssen
  • Verbessern Sie die Auffindbarkeit Ihrer Website mit Semantic Markup