I stedet for å bruke en oppblåst plugin som har funksjoner du aldri vil bruke, viser denne opplæringen hvordan du lager en super enkel lysboks for håndtering av bilder. Den er perfekt for bildegallerier, porteføljer og mer!
Åpne din favoritt tekstredigerer (jeg bruker Coda) og la oss starte med HTML-oppslaget vårt.
Merk: Hvis du ikke oppgir en riktig DOCTYPE, og siden gjøres i quirks-modus, vil lysboksen ikke vises riktig i Internet Explorer.
Enkel lysbok Super Enkel Lightbox
Vår super enkle lightbox demo. Her er bildelinkene:
- Bilde 1
- Bilde 2
- Bilde 3
Merk: Vi brukte klassen lightbox_trigger
på hver kobling som har et bilde vi vil vise i vår lysboks. Dette blir nyttig når vi ønsker å målrette mot elementene i skriptet vi skal skrive.
La oss bruke noen grunnleggende CSS styling til vår side. For dette grunnleggende eksemplet vil vi plassere alle våre CSS i koder i
seksjon.
kropp margin: 0; padding: 0; bakgrunn: #efefef; tekst-Justering: center; / * brukes til å sentrere div i IE * / #wrapper bredde: 600px; margin: 0 auto; / * sentrerer diven horisontalt i alle nettlesere (unntatt IE) * / bakgrunn: #fff; tekst-Justering: venstre; / * Tilbakestiller tekstjustering fra kroppstempel * / grense: 1px solid #ccc; border-top: none; padding: 25px; / * La oss legge til noen CSS3-stiler, disse vil degradere grasiøst i eldre nettleser og IE * / border-radius: 0 0 5px 5px; -moz-grense-radius: 0 0 5px 5px; -webkit-grense-radius: 0 0 5px 5px; bokseskygge: 0 0 5px #ccc; -moz-box-shadow: 0 0 5px #ccc; -webkit-boks-skygge: 0 0 5px #ccc;
Nå har vi en enkel, men elegant side der vi kan teste ut vårt lysboksvindu.
Vi brukte margin: 0 auto;
å sentrere vår #wrapper div horisontalt på siden. Dette fungerer bra for alle nettlesere bortsett fra ... trommevals ... du gjettet det, Internet Explorer. For å fikse dette problemet brukte vi tekst-Justering: center;
på kroppsmerket som senterer barns div (i vårt tilfelle, #wrapper div) horisontalt på siden.
Imidlertid bruker tekst-Justering: center;
På kroppsmerket vil senteret justere all tekst i barnedivene også. For å fikse dette, tilbakestilles vi tekst-Justering: venstre;
i #wrapper div for å gjenopprette alt annet barninnhold til venstrejustering. Sjekk ut communitymx.com hvis du er interessert i å lære mer om dette bestemte IE-problemet.
Dette er hva vår lightbox HTML-oppslag vil se ut. Ikke legg det inn i HTML-oppslaget. Vi vil gjøre det dynamisk med jQuery. Forståelse av lightbox HTML markup tillater oss å style det med CSS tilsvarende.
Klikk for å lukke
Merk: Det er ingen verdi for bildet src
fordi det vil være avhengig av hvilken kobling som klikkes av brukeren. Derfor vil vi bruke javascript til å sette verdien dynamisk senere.
La oss gå videre og sett inn CSS for vår lysboks. Ved å gjøre dette nå, vil sideelementene våre vises riktig senere når vi dynamisk setter inn HTML-koden vår.
Først har vi vår #lightbox div som fungerer som den svarte overlegget. Vi vil at dette skal fylle brukerens hele visningsport, uansett skjermoppløsningen.
#lightbox posisjon: fast; / * holder lysboksvinduet i gjeldende visningsport * / topp: 0; venstre: 0; bredde: 100%; høyde: 100%; bakgrunn: url (overlay.png) gjenta; tekst-Justering: center;
CSS er ganske grei. Her er noen høydepunkter:
stilling: fast
gjør at overlegget vises riktig i det nåværende visningsport, uansett brukerens posisjon på skjermen (øverst eller nederst på siden). Dette er hvor bruk av riktig DOCTYPE kommer til nytte. Hvis IE kjører i quirks-modus på grunn av feil DOCTYPE (eller ingen i det hele tatt), vil ikke overlegget vises riktig.bredde: 100%; høyde: 100%;
Dette gjør vår #lightbox div, som fungerer som det svarte overlegget, dekker hele visningsporten uansett sluttbrukerens skjermoppløsning.bakgrunn: url (overlay.png) gjenta;
Vi kunne ha brukt RGBa-farge for å gjøre bakgrunnsfargen litt gjennomsiktig. Dette ville ha krevd noe lignende bakgrunn: rgba (0,0,0, .7);
. Men siden denne egenskapen er ganske ny, vil bakgrunnsfargenes åpenhet ikke fungere i IE (med mindre du bruker visse hack). Så i stedet for å bruke CSS3 og IE hacks, oppretter vi bare en 1x1 piksel PNG i Photoshop med en svart bakgrunn og setter gjennomsiktigheten på rundt 75 prosent.Bare for å forsikre oss om at våre brukere ikke er forvirret, legger vi til tekst i lysboksen overlegg, slik at de kan klikke hvor som helst for å få lysboksen til å forsvinne.
#lightbox p text-align: right; farge: #fff; margin-right: 20px; font-size: 12 piksler;
Nå ønsker vi å stil bildet som vil vises i lysboksen. Jeg skal bare gi det noen CSS3-effekter. Disse åpenbart vil ikke vises i IE og eldre nettlesere, men det forringes fortsatt grasiøst. Du kan legge til andre effekter her hvis du vil, som en hvit ramme rundt bildet.
#lightbox img box-shadow: 0 0 25px # 111; -webkit-boks-skygge: 0 0 25px # 111; -moz-box-shadow: 0 0 25px # 111; en maksimal bredde på: 940px;
Merk:Legge til en max bredde
vil krympe eventuelle høyoppløselige bilder vi kan knytte til. Dette bidrar til å sikre at alle bilder passer inn i visningsporten.
Dette er hva vår side nå ville se ut om vi satt inn vår lightbox-HTML i dokumentet (vi skal gjøre det med javascript):
Bilde med foto av CSS Lounge Photostream på FlickrHvis brukeren klikker en kobling til bilde, vil vi vise bildet i en lysboks. For å gjøre dette, ønsker vi først å bestemme logikken bak funksjonaliteten vår:
lightbox_trigger
lysboks
div er allerede inne i dokumentet img
tag inne i innhold
div. src
verdi med href
verdien av hvilken som helst kobling ble klikket.src
verdi satt til href
verdien av hvilken som helst kobling ble klikketNå som vi har vår HTML-oppgradering, CSS-styling og javascript-logikk, er det på tide å dykke inn i koden og få vår funksjonalitet til å fungere.
Først inkluderer vi jQuery-biblioteket. Jeg liker å legge til det like før avslutningen kropp
tagg med jQuery's hosted versjon.
La oss pakke inn koden vår i manus
tags og jQuery's document.ready
Vi vil inkludere vårt tilpassede skript like etter at du har inkludert jQuery-biblioteket. Vi konfigurerer vår jQuery-funksjon ved å bruke dollartegnet "$" i funksjonsparameteren, slik at vi ikke trenger å skrive "jQuery" hver gang vi vil bruke jQuery-funksjonalitet. I stedet kan vi bare bruke "$".
lightbox_trigger
FunksjonSom forklart tidligere i trinn 1, for hvert koblet bilde som vil bruke lysboksen, tildelte vi det en klasse av lightbox_trigger
. I vårt skript oppretter vi en funksjon som vil skje hver gang en kobling med klassen lightbox_trigger
er klikket.
$ ('. lightbox_trigger'). klikk (funksjon (e) // Kode som lager lysboksen;
Først vil vi forhindre standardhandling. Dette forhindrer at nettleseren åpner det koblede bildet på en ny side. (For å se hvorfor vi bruker preventDefault ()
Klikk her
e.preventDefault ();
Deretter får vi href
av bildet vi vil vise i lysboksen fra lenken som ble klikket
var image_href = $ (dette) .attr ("href");
Det er her vår forutbestemte logikk virkelig kommer til spill. Fordi vi setter inn vår lightbox-HTML dynamisk, vil vi først se om den allerede finnes i dokumentet. Så, vi vil kjøre en if / else setning.
Hvis lysboks
div eksisterer, vil vi erstatte img
tag inne i innhold
div. Vi vil også sørge for at src
verdien av bilde tagget er satt til å matche href
av hvilken som helst kobling ble klikket.
hvis ($ ('# lightbox'). lengde> 0) // #lightbox eksisterer // legg inn img-tag med klikket lenke href som src verdi $ ('# innhold'). html'); // vis lysboksen vindu - du kan bruke en overgang her hvis du vil, ie.e ... show ('fast') $ ('# lightbox'). show ();
Hvis vår lysboks
div kan ikke bli funnet i dokumentet, vi vil opprette det og sette det inn. Dette vil bare løpe første gang en lenkekobling klikkes.
ellers // # lightbox eksisterer ikke // opprett HTML markup for lightbox-vinduet var lightbox = ''+''; // sett inn lysboksen HTML til side $ ('body'). append (lightbox);Klikk for å lukke
'+''+ // Sett inn klikket lenke's href i img src''+''+'
Til slutt vil vi gjemme lysboksvinduet når brukeren klikker på den. Fordi div lysboks
er satt inn etter at DOM allerede er konstruert (siden har allerede lastet inn), må vi fortelle jQuery at vi plasserer en ny div på vår side og å se etter klikk på disse nye elementene. Vi gjør dette ved å bruke .live () i stedet for .click ()
$ ('# lightbox'). live ('klikk', funksjon () $ ('# lightbox'). skjul (););
Nå som vi har undersøkt vårt lightbox-skript, her er hvordan alt ser ut som:
Bilde med foto av CSS Lounge Photostream på Flickr
Det er det! Nå har du en lett lightbox løsning for å vise bilder. Jeg håper du likte denne opplæringen og lærte noe nytt! Takk for at du leste.
Denne opplæringen har lært deg selv-tilnærming, men hvis du foretrekker en ferdig løsning, har Envato Market mange lysboksplugger tilgjengelige. Her er et utvalg av de mest populære:
Lightbox Evolution er et verktøy for visning av bilder, html-innhold, kart og videoer i en "lightbox" -stil som flyter overhodet på nettsiden. Ved hjelp av Lightbox Evolution kan nettstedet forfattere vise frem et bredt utvalg av medier i alle de store nettleserne uten å navigere brukere bort fra koblingssiden. Det er også en jQuery-versjon.
Lightbox Evolution for WordPressiLightBox lar deg enkelt lage de vakreste lydhørste overleggene med jQuery JavaScript-biblioteket. Ved å kombinere støtte for et bredt spekter av medier med nydelige skins og en brukervennlig API, har iLightBox som mål å skape lysbokse-konseptet så langt som mulig.
iLightBox · Revolusjonerende lysboksenpluginPopupPress er et Wordpress-plugin som lar deg enkelt lage elegante overlappende vinduer. Dette pluginet er ment å sette inn hvilken som helst type innhold i en popup på den raskeste og enkleste måten på en hvilken som helst side av WordPress. Den har også en enkel systemstatistikk for antall visninger av popups.
PopupPress - Popup med Slider og lysbok for WP