Den perfekte lysboksen? Bruk PhotoSwipe med jQuery

Jeg har nylig kommet over et JavaScript-bibliotek kalt PhotoSwipe, og jeg er virkelig imponert. Det er et glimrende bibliotek som overlegger et bilde eller en gruppe bilder på din nåværende side, en effekt kjent som lysboks. PhotoSwipe er foreløpig utviklet av Dmitry Semenov-han oppbygde det i fjor da han overtok prosjektet. Forbedringer inkluderer:

  • Modular: PhotoSwipe er innebygd i flere moduler, slik at du kan dike bestemte funksjoner du ikke trenger. Dette holder biblioteket veldig lett.
  • Mottakelig: en uunnværlig funksjon for all del. Photoswipe serverer riktig bildestørrelse basert på gjeldende visningsport.
  • Berør gestus: PhotoSwipe støtter noen berøringsbevegelser som tillater brukere å samhandle gjennom Trykk og knipse, og gir dem popup, zoome og lukke funksjoner.

Den eneste ulempen er at PhotoSwipe ikke går tom for boksen. Som utvikleren sier:

"PhotoSwipe er laget enkelt og raskt for sluttbrukere, ikke for utviklere. Det er ikke en enkel jQuery-plugin, det er minst grunnleggende JavaScript-kunnskap som kreves for å installere.

Men det kan brukes sammen med andre biblioteker. I denne opplæringen skal vi se på hvordan du bruker PhotoSwipe med jQuery. Vi gjør hele prosessen lettforståelig, selv om du ikke er velbevandret i rent JavaScript.

La oss starte.

1. Komme i gang

Vi begynner med:

  1. Opprette prosjektkatalogene.
  2. Opprette et HTML-dokument.
  3. Linker til jQuery. I denne opplæringen skal jeg bruke jQuery 2.0, og støtter derfor bare moderne nettlesere.
  4. Ta tak i kopier av PhotoSwipe-biblioteket som består av filene: photoswipe.min.jsphotoswipe-ui-default.min.js (koden som konstruerer PhotoSwipe brukergrensesnittet), default-skin.cssdefault-skin.pngdefault-skin.svg, ogpreloader.gif.
  5. Ordne filene i din foretrukne katalogrekkefølge og lenke dem i HTML-filen.

2. Strukturere HTML

HTML-strukturen er den viktigste delen, siden det til slutt vil kjøre hvordan vi skriver JavaScript. Her antar vi at vi har et par bilder, som følger:

Strand

Datatributter

Bortsett fra klassen og Schema attributter (som vil hjelpe med SEO), har vi også lagt til en data-* Attributt i ankeretiketten som pakker inn bildet. Dette lagrer full størrelse (bredde x høyde) av bildet.

Mer Markup

Nå legger vi til merket som PhotoSwipe vil bruke til å legge over de fulle bildene. Legg til dette like før den avsluttende kroppsmerket, .

 

Vi er alle satt sammen med HTML, så nå kan vi fortsette med JavaScript. Som nevnt vil vi bruke jQuery.

3. jQuery

Våre bilder er gruppert innenfor en div med bilde klasse. Det kan være flere flere bildegrupper på siden, derfor løper vi gjennom hverandre .bilde element.

$ ('. bilde'). hver (funksjon () ); 

detaljer

PhotoSwipe krever at vi gir hele bildekilden sammen med størrelsen. For å ta vare på dette oppretter vi en funksjon som vil løpe gjennom ankerkoden for å hente disse detaljene, som følger:

$ ('. bilde'). hver (funksjon () var $ pic = $ (dette), getItems = funksjon () var elementer = []; $ pic.find ('a'). var $ href = $ (dette) .attr ('href'), $ size = $ (dette) .data ('size'). splitt ('x'), $ width = $ size [0] = $ size [1]; var item = src: $ href, w: $ bredde, h: $ høyde items.push (item);); returnere elementer; var items = getItems ();); 

La oss bryte denne koden nedover i flere deler:

  1. Vi initialiserer først med en tom matrise i elementer = [].
  2. Så løp vi gjennom hver anker tag med .Hver() metode.
  3. $ href = $ (dette) .attr ('href') oppnår verdien i href attributt, lagre banen til hele bildet.
  4. $ size = $ (this) .data ('size'). split ('x') vil få verdien av data-størrelse attributt gjennom jQuery .data() metode. Vi bruker deretter dele()metode for å skille verdien.
  5. Vi er i stand til å oppnå verdien av bredden og høyden separat med: $ width = $ size [0] og $ høyde = $ størrelse [1].
  6. Bruker trykk() Metode vi samler all denne informasjonen i en Array.

Test i konsoll

Vi har nå bildekilden og bildestørrelsen lagret i elementer variabel. For å bekrefte kan du kjøre variabelen gjennom console.log () og du bør finne følgende datastruktur i DevTools.

Klikk

Deretter binder vi figur element med klikk arrangement, konstruer en PhotoSwipe-forekomst, passere elementer sammen med konfigurasjonsalternativene, og endelig initialisere PhotoSwipe.

var $ pswp = $ ('. pswp') [0]; $ pic.on ('klikk', 'figur', funksjon (hendelse) event.preventDefault (); var $ index = $ (dette) .index (); var options = indeks: $ index, bgOpacity: 0,7, showHideOpacity: true // Initialiser PhotoSwipe var lightBox = ny PhotoSwipe ($ pswp, PhotoSwipeUI_Default, elementer, alternativer); lightBox.init ();); 

Grunnen til at vi bruker figur element for å klikke på, i stedet for ankeretiketten, er slik at vi enkelt kan hente indeksen (eller den etterfølgende rekkefølgen). Dette tillater oss å informere PhotoSwipe om riktig indeks for å overlappe det tilsvarende bildet.

Konklusjon

Vi har nettopp implementert PhotoSwipe ved hjelp av jQuery. Koden er sammenlignbart smalere og lettere forståelig enn når den er skrevet i vanilje JavaScript. 

Nå er du startet, du kan også justere PhotoSwipe med en håndfull alternativer som tilbys, og til og med forhåndslast bildet slik at du vil se hele bildet umiddelbart ved å klikke. Jeg vil forlate stilene til fantasien din, siden det ikke er noen strenge regler for dem.

Jeg håper du har lært noe fra denne opplæringen, og synes det er nyttig til tider. Ikke glem å sjekke ut live demo og la noen spørsmål eller tanker i kommentarene!

Ytterligere ressurser

  • Komme i gang med PhotoSwipe
  • Responsive bilder med PhotoSwipe
  • 30 dager å lære jQuery
  • Alt du trenger å vite om HTML5-data-attributten
  • Forbedre nettstedets oppdagbarhet med semantisk markering