jQuery lightbox plugin

2009 február 3 | besorolva: Hasznos tippek, Javascript

A Lightbox JS indulása óta ez az effekt fogalommá nőtte ki magát, a képek, sőt egyéb beágyazott tartalmak megjelenítésének kedvelt technikája. Természetesen létezik jQuery Javascript könyvtárra épülő megoldás is. Ha az oldaladon más célokra már jQuery-t használsz, akkor célszerűtlen emiatt más script könyvtárat is betölteni, de a mérete miatt sem rossz választás, a jQery 1.2.6.min js, és a jquery.lightbox-0.5 js együtt csak 74,1Kb.

Az egyik megoldás a jQuery hivatalos oldalán leírt Balupton Edition, az Insic Designs blogon pedig egész kis gyűjtemény található. Most Leandro Vieira Pinho által írt lightbox plugint mutatom be részletesebben.

jQuery lightbox plugin

A lightbox plugin használata:

Az oldal head részébe az alábbi kódot kell beilleszteni:

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.lightbox-0.5.js"></script>

Szükség van még egy css fájlra is:

<link rel="stylesheet" type="text/css" href="css/jquery.lightbox-0.5.css" media="screen" />

Ennek tartalmát természetesen az oldal eredeti stíluslapjába is bemásolhatod.

A html:

A plugin használatához nem kell átírnod a kódod, a jQuery rugalmas selectorával bármilyen képhalmazt - akár többet is - kijelölhetsz. Lényeg hogy a kódod „váza” ilyesféle legyen:

<a href="image1.jpg" title="képfelirat"><img src="thumb_image1.jpg" alt="" /></a>

A script a képfeliratokat az 'a' tag title attributumának tartalmából veszi át, fotóalbum esetén pedig azt is kiírja, hány kép található az adott válogatásban.

A jQuery lightBox plugin aktiválása:

Ezek után hívd meg jQuery lightBox függvényt, válaszd ki a hivatkozásokat, amelyre alkalmazni szeretnéd. Mutatok néhány példát:

<script type="text/javascript">
$(function() {
	// Első példa...
	$('a[@rel*=lightbox]').lightBox(); // Minden link, amely rel="lightbox" attribútummal rendelkezik
	// Vagy ez...
	$('#gallery a').lightBox(); // Minden link, amely gallery ID-jű elemben van.
	// Itt egy másik...
	$('a.lightbox').lightBox(); // Minden link, amely lightbox class-al rendelkezik
	// Esetleg ez...
	$('a').lightBox(); // Minden link az oldalon
	// ... A lehetőség száma rengeteg. Használd kreatívitásod vagy a fenti példák bármelyikét.
});
</script>

Az elérhető konfigurációs beállítások:

A plugin néhány beállítási lehetősége a meghíváskor testreszabható, a konfigurációs értékeket a függvény paramétereként egy hash-ben adhatod át, az alábbiak szerint:

* overlayBgColor - A színátfedés (overlay) színe, alapértelmezetten #000 fekete.
* overlayOpacity - A színátfedés átlátszóságának mértéke, alapból 0.8.
* imageLoading - Animáció a betöltődés alatt. images/lightbox-ico-loading.gif az alapértelmezett.
* imageBtnClose - Bezárás gomb. images/lightbox-btn-close.gif az alapértelmezett.
* imageBtnPrev - "Előző" gomb. images/lightbox-btn-prev.gif az alapértelmezett.
* imageBtnNext - "Következő" gomb. images/lightbox-btn-next.gif az alapértelmezett.
* containerBorderSize - A képet tartalmazó box padding értéke, 10 az alapértelmezett.
* containerResizeSpeed - A képet tartalmazó box átméretezésének időtartama, 400 az alapértelmezett.
* txtImage - Az "Image" felirat.
* txtOf - Az "of" felirat.
* imageBlank - A blank image, amely az Internet Explorer hover hack-hez kell, images/lightbox-blank.gif az alapértelmezett.
* keyToClose - Bezárás gyorsbillentyű, a c (close) az alapértelmezett.
* keyToPrev - Előző kép gyorsbillentyű, p (previous) az alapértelmezett.
* keyToNext - Következő kép gyorsbillentyű, az n (next) az alapértelmezett.

Példa a jQuery lightbox plugin konfigurálására:

<script type="text/javascript">
$(function() {
   $('a[@rel*=lightbox]').lightBox({
	overlayBgColor: '#FFF',
	overlayOpacity: 0.6,
	imageLoading: 'http://example.com/images/loading.gif',
	imageBtnClose: 'http://example.com/images/close.gif',
	imageBtnPrev: 'http://example.com/images/prev.gif',
	imageBtnNext: 'http://example.com/images/next.gif',
	containerResizeSpeed: 350,
	txtImage: 'Imagem',
	txtOf: 'de'
   });
});
</script>

Mire vársz? Töltsd le vagy nézd meg a demót !

Több jQuery plugin kombinálása:

Csoxa kérésére megmutatom, hogy lehet az előbb bemutatott lightbox, és az animált hoover plugint együtt használni:

A header-be a szokásos módon helyezd el a scripteket:

<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="jquery.lightbox-0.5.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.lightbox-0.5.css" media="screen" />

Aktiváld egymás után a két funkciót:

<script type="text/javascript">
		$(function() {
			$('ul.hover_block li').hover(function(){
				$(this).find('img').animate({top:'182px'},{queue:false,duration:500});
			}, function(){
				$(this).find('img').animate({top:'0px'},{queue:false,duration:500});
			});
		});
		</script>
 
		 <script type="text/javascript">
    $(function() {
        $('#gallery a').lightBox({fixedNavigation:true});
    });
    </script>

A html kódban a korábbi hivatkozásokat kell annyiban átalakítani, hogy a nagy méretű képre linkelsz, illetve ha szeretnél feliratot, akkor feltétlenül szükség lesz a title elemre.

<ul class="hover_block" id="gallery">
 <li><a href="01_big.jpg" title="Ez a kép felirata">
  <img src="01.jpg" alt="bluedesign blog" /> Ez a szöveg a kép mögötti tartalom,  kattintható hivatkozással.</a>
 </li>
</ul>

Ennyi, a jQuery megoldásokat könnyen lehet kombinálni. A megjelenést a stíluslappal rugalmasan tudod variálni, sok sikert hozzá.

Mire vársz? Töltsd le vagy nézd meg a demót !

bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Tags: ,

Bejelentkezhetsz meglévő Facebook, vagy Twitter profiloddal is!

11 Comments so far

  1. csoxa Says:

    KÖSZÖNÖM!x1000 Mikor megláttam a bejegyzést már tudtam, hogy ez az én napom!

    Köszi

  2. H.S.László Says:

    Szívesen, remélem megmutatod, mit sikerül kihozni belőle!

  3. csoxa Says:

    Itt is lenne!Eddig van kidolgozva... a felmerült problémák, pedig: nem tudtam elhelyezni hivatkozásokat anélkül, hogy ne nyitotta volna meg, mint egy képet(ezt kiküszöböltem, nem kiállításra való, de működik, onclick), még egy érdekes jelenség, pedig, hogy a Next gombra kattintva nem történik semmi, csak gondolkodik, és ez van, ha csak a képre kattintunk, viszont, ha kettőt klikkelünk, akkor már előremegy!
    ...

  4. H.S.László Says:

    A problémát a selector nem megfelelő kiválasztása okozza, mivel #gallery -n belül minden elemre működik. Szűkíteni kell a kiválasztást, pédául adj azoknak a linkeknek 'lightbox' class-t, amelyeket a lightbox-al szeretnél megnyitni, mutattam rá példát a cikkben. Természetesen ezt át kell írni a js hívásban is. A header-ben van egy kis gond, a js hívások többször is szerepelnek. Ha kell, mailben segítek.

  5. csoxa Says:

    Megtennéd?

  6. Homare Says:

    Szia!

    Azt szeretném megkérdezni, hogy nem Te voltál-e még régen az OGame játékon a blue szövetség alapítója? :) Lehet nem, csak valahogy Te ugrottál be, ahogy néztem az oldalad. Amúgy nagyon jó az oldal, gratulálok hozzá. Sok hasznos infót lehet itt megtalálni.

    Üdv: Homare

  7. H.S.László Says:

    Szia, nem, sosem voltam nagy játékost. Az elismerést köszönöm, a sok munka mellett igyekszem néha írni is valamit...

  8. sarkiroka Says:

    konkrétan ezt fordítottad le egy az egyben: http://leandrovieira.com/projects/jquery/lightbox/#how-to-use jól tévedek? ámde a kérdésem inkább az lenne, hogy miért nem működik a keyToPrev és a többi ilyen gomb?

  9. H.S.László Says:

    Igen, ha megnézed a cikk elejét, konkrétan hivatkozom a forrásra. A gyorsbillentyűk nekem gond nélkül működnek, ctrl+c -bezár, ctrl+p -vissza, ctrl+n - következő. Milyen környezetben nem működik?

  10. Kobra Says:

    H.S.László Says szia elnézést a zavarásért de nekem kellene a weboldalomra egy ilyen képnézegető de nem nagyon tudom hogy kell berakni az oldalra ha eggyáltalán belehet mert ingyenes weblap oldal.biz

  11. Fulton Says:

    Sziasztok
    Én azt szeretném megkérdezni hogy lehet az megoldani, mikor a web oldalam bejön akkor vele együtt automatikusan egy plakát is megjelenjen LightBox ban?
    nem tudna nekem ebben valaki segíteni??
    esetleg valami kód hozzá...

Leave your comment

Bejelentkezhetsz meglévő Facebook, vagy Twitter profiloddal is!