Hjemmeside » Coding » Slik spiller du animerte GIFs påClick

    Slik spiller du animerte GIFs påClick

    Den animerte GIF er en populær måte å visualisere et designkonsept på (her er et eksempel på hvordan vi gjorde det for posttekst-effekter opprettet med CSS) eller vise et kort videoklipp. Men hvis du har for mange av dem på samme side, vil det avvike brukerens fokus. For sider som viser mange GIF-er, er dette dårlige nyheter.

    Løsningen: servere brukere med et statisk bilde og bare la det animerte GIF-programmet kjøres ved brukerklikk. I denne korte opplæringen skal vi vise deg hvordan du gjør nettopp det.

    • Se demo
    • Last ned kilde

    Starter

    Begynn med å forberede prosjektmappene og filene som inkluderer: en HTML-fil, jQuery, og til slutt en JavaScript-fil der vi skal skrive vår kode. Du kan knytte jQuery til en CDN eller ta tak i kopien og lenke den til prosjektkatalogen din. Jeg ville forlate stilene og CSS til fantasien din. Den viktigste delen er HTML-oppslaget er som følger:

     

    Legg merke til tillegget data-alt attributt i img element. Dette er hvor vi lagrer GIF, i stedet for det statiske bildet som vi først betjener. Du kan legge til flere bilder og også legge til en bildetekst for hver gjennom figcaption element.

    Etter det vil vi skrive JavaScript som vil bringe den magiske. Tanken er å betjene GIF-bildet når brukeren klikker på bildet.

    JavaScript

    Først oppretter vi en funksjon som vil hente GIF-bildebanen vi har satt inn i data-alt Egenskap. Vi vil gå gjennom hvert av bildene og bruke jQuery .data() metode for å gjøre det:

     var getGif = funksjon () var gif = []; $ ('img'). hver (funksjon () var data = $ (dette) .data ('alt'); gif.push (data);); return gif;  var gif = getGif ();

    Vi kjører funksjonen og lagrer utdataene i en variabel gif, som ovenfor. De gif variabel inneholder nå stien til GIF fra bildene på siden.

    Bilde forhåndsinnlasting

    Vi har nå et lasteproblem: med GIF ikke lastet inn, er det en sjanse for at den animerte GIF ikke ville spille øyeblikkelig (siden nettleseren vil trenge noen få sekunder for å fullføre GIF-filen). Denne forsinkelsen ville føles mer signifikant når GIF-bildestørrelsen er stor.

    Vi må forhåndsbelaste, eller laste GIF-ene samtidig som siden lastes inn.

     // Preload all GIF. var bilde = []; $ .each (gif, funksjon (indeks) bilde [index] = nytt bilde (); bilde [index] .src = gif [index];);

    Nå, åpne DevTools og deretter hodet til Network (eller ressurser) fanen. Du vil legge merke til at GIFene allerede er lastet, selv om de er lagret i data-alt Egenskap. Og følgende er all koden du trenger for å gjøre det.

    Det siste stykket av koden er hvor vi binder hver figur element som bryter bildet med klikk begivenhet.

    Koden vil bytte bildekilden mellom src Tilordne hvor det statiske bildet blir servert og data-alt Tilordne hvor vi først betjener GIF-bildet.

    Koden vil også gå tilbake til det statiske bildet som brukeren klikker en gang til, “stoppe” animasjonen.

     $ ('figure'). på ('klikk', funksjon () var $ this = $ (dette), $ index = $ this.index (), $ img = $ this.children ('img'), $ imgSrc = $ img.attr ('src'), $ imgAlt = $ img.attr ('data-alt'), $ imgExt = $ imgAlt.split ('.'), hvis ($ imgExt [1] === 'gif') $ img.attr ('src', $ img.data ('alt')). Attr ('data-alt', $ imgSrc); annet $ img.attr imgAlt) .attr ('data-alt', $ img.data ('alt')););

    Og det er det. Du kan polere siden med stiler, for eksempel, du kan legge til en spilleknapp som legger bildet over for å indikere at den er “spillbar” eller en animert GIF.

    Sjekk ut demoen og last ned kilden her.

    • Se demo
    • Last ned kilde