Treinamento Online
Terça-feira, 16 de outubro de 2007 às 09h00

Diga "oi" ao jQuery lightBox Plugin

Faça o curso: jQuery na Prática

Olá a todos. Gostaria, primeiramente, de informar sobre uma promoção que criei com a finalidade de nos conhecermos no iMasters interCon 2007, fazermos networking e discutirmos assuntos relevantes para nossa coluna.

Se você se inscrever no iMasters InterCon 2007 até o dia 22 de outubro, irá concorrer a um pacote "Leandro Vieira" com 3 cursos (incluindo o lançamento Curso Interativo Adobe Dreamweaver CS3); e se você indicar mais 4 amigos vai concorrer a R$ 100,00 em compras na TI Shop no dia evento. Confira mais detalhes sobre a promoção no meu blog sobre desenvolvimento web.

Hoje falaremos sobre um plugin que criei para a jQuery, o jQuery lightBox plugin. A idéia de criar esse plugin surgiu após o artigoGaleria de imagens dinâmica com PHP, Spry e o Lightbox 2 - Conclusão. Onde utilizei o Lightbox JS 2.0 que utiliza a biblioteca JavaScript Prototype. Como minha preferência no momento é a utilização da jQuery, resolvi adaptá-lo para essa fantástica biblioteca.

Como eu disse, o jQuery lightBox plugin foi inspirado no Lightbox JS criado pelo Lokesh Dhakar. O qual tem o objetivo de exibir imagens sobre a página em que ela se encontra de forma fácil, simples, intuitiva e não-obstrutiva. Recomendo a leitura da série Tudo sobre Javascript não-obstrutivo do amigo Metzen, Gerente de Desenvolvimento do iMasters.

Acesse o site do jQuery lightBox plugin e veja-o em ação clicando na aba Example.. Este é o resultado que iremos produzir no decorrer deste artigo.

Primeiramente faça o download do jQuery lightBox plugin. O arquivo ZIP baixado contém os seguintes arquivos: jquery.js e jquery.lightbox-0.2.js. Ambos na pasta js; o primeiro refere-se a biblioteca JavaScript jQuery; o segundo a versão 0.2 do jQuery lightBox plugin.

O arquivo jquery.lightbox-0.2.css, localizado na pasta css, é utilizado na estilização do jQuery lightBox plugin.

A pasta images contém as imagens utilizadas, são elas:

  • lightbox-ico-loading - gif animado para simular o efeito loading;
  • lightbox-btn-next - botão de avançar;
  • lightbox-btn-prev - botão de voltar;
  • lightbox-btn-close - botão de fechar;
  • lightbox-blank - imagem não exibida, mas utilizada pelo engine do jQuery lightBox plugin.

As imagens podem ser traduzidas, modificadas e estilizadas para atender a identidade visual do projeto em que você está envolvido.

Uma vez baixado e conhecido os arquivos e suas respectivas funcionalidades, vamos conhecer a forma de utilizá-lo em nossos projetos.

A primeira coisa que precisamos ter em mente é que o jQuery lightBox plugin é utilizado para exibir uma imagem sobre a página em questão. O que significa dizer que a página que irá utilizá-lo precisa exibir as imagens desejadas. Porém, tais imagens precisam estar englobadas por um link respectivo a cada uma delas. Desta forma, se o usuário estiver com o JavaScript desabilitado em seu navegador, o que impossibilitará o jQuery lightBox plugin de funcionar, ele será redirecionado para a exibição da imagem e não será prejudicado quanto ao seu objetivo. Isto é, visualizar a imagem desejada.

Com essa lógica em mente, precisaremos criar uma marcação HTML da seguinte forma:

<a href="image1.jpg"><img src="thumb_image1.jpg" width="72" height="72" alt="" /></a>

Ou seja, exibimos um thumbnail da image1, thumb_image1.jpg, através da tag IMG, porém englobando-a com um link para a image1.jpg.

Você poderá inserir quantas imagens forem necessárias. Para diferenciar os links que serão utilizados pelo jQuery lightBox plugin do restante da página, você pode definir alguma marcação extra. Por exemplo, adicionar uma classe, um atributo rel, colocar todos os links dentro de uma div, ou o que desejar.

Para o Lightbox JS criado pelo Lokesh Dhakar funcionar, você precisa definir um atributo rel com o valor lightbox. Mas, o jQuery lightBox plugin é mais flexível. E você define como deseja que ele funcione, e não ao contrário. Graças ao poder e flexibilidade dos seletores da jQuery.

Sendo assim, vamos levar em consideração a marcação HTML definida abaixo:

<div id="galeria">
	<ul>
    	<li>
        	<a href="image1.jpg"><img src="thumb_image1.jpg" width="72" height="72" alt="" /></a>
        </li>
    	<li>
        	<a href="image2.jpg"><img src="thumb_image2.jpg" width="72" height="72" alt="" /></a>
        </li>
    	<li>
        	<a href="image3.jpg"><img src="thumb_image3.jpg" width="72" height="72" alt="" /></a>
        </li>
    </ul>
</div>

Como você percebeu, temos uma lista não-ordenada com os links e as imagens desejadas dentro de uma div com o ID galeria. Marcação HTML pronta, vamos aplicar o jQuery lightBox plugin na página.

Primeiramente, adicione os arquivos JavaScript no header da sua página. Observe:

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

Após, inclua o arquivo CSS, ainda no header.

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

Tendo incluído os arquivos necessários. Vamos ativar o jQuery lightBox plugin. Observe:


<script type="text/javascript">
$(function() {
   $('#galeria a').lightBox(); // Seleciona todos os links dentro do elemento com ID galeria
});
</script>

Simples. Se você não tem um breve conhecimento sobre a jQuery. Pode não ter compreendido o que fizemos acima. Levando isso em consideração, vou explicar o que fizemos.


$(function() {
...
});

Simplistamente falando, o código acima seria algo como:


window.onload = function() {
...
}

Porém, uma versão melhorada que não discutirei nesse artigo, por fugir do escopo deste tutorial. Recomendo a esta leitura sobre o assunto Launching Code on Document Ready (em inglês).

Em seguida, temos o a função dólar da jQuery que para este exemplo utilizou de seletores CSS para informar a jQuery quais elementos na página selecionar. Como nossos links estão dentro da DIV com ID galeria, utilizamos o seguinte:

$('#galeria a').lightBox();

Após a seleção, $('#galeria a'), dos elementos, aplicamos o plugin a eles. Pronto, somente. Já temos o jQuery lightBox plugin em funcionamento.

Se você já utiliza o Lightbox JS e gostaria de migrar para o jQuery lightBox plugin, você pode usar a seguinte seleção de elementos:

$('a[@rel*=lightbox]').lightBox();

Ou seja, utilizamos o XPATH para selecionar todos os links que contenha o valor lightbox em seu atributo rel.

O primeiro motivo que levaria você a migrar para o jQuery lightBox plugin seria o fato dele utilizar a jQuery, outros motivos listo abaixo:

O Lightbox JS, além do seu próprio arquivo, precisa de mais três arquivos: a biblioteca JavaScript Prototype, a biblioteca de efeitos Scriptaculous e o arquivo effects.js para ser utilizado junto a ela. Já o jQuery lightBox plugin, além do seu próprio arquivo, precisa somente de um arquivo, o da jQuery. Essa diminuição de arquivos, significa que o aplicativo irá carregar mais rápido, será menos requisição HTTP e você terá economia de banda.

Com o Lightbox JS você está fadado a utilizar o atributo rel nos links com o valor lightbox. Já com o jQuery lightBox plugin você define como sua marcação HTML deve ser.

Tanto o Lightbox JS quanto o jQuery lightBox plugin permite que você altere alguns aspectos de configuração em seus respectivos arquivos. Porém esse último, permite que você altere algumas configurações ao chamá-lo, dessa forma, você poderá ter várias chamadas para o jQuery lightBox plugin na mesma página e cada uma delas com configurações distintas. Por exemplo:

<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
   });
});
</script>

No exemplo acima, definimos os quatro parâmetros passíveis de serem configurados na versão 0.2 do jQuery lightBox plugin. O primeiro deles, overlayBgColor, define qual a cor que irá encobrir o body da página; o segundo, overlayOpacity, define a opacidade que esse encobrimento terá; já o terceiro e quarto define a localização das imagens de carregamento e do botão de fechar, respectivamente. A ordem dos parâmetros não precisa ser necessariamente como demonstrada acima, sinta-se à vontade.

Espero que tenham gostado e que o jQuery lightBox plugin seja útil a vocês. Fique atento aos novos lançamentos do referido plugin em seu site. Se tiver alguma dúvida, sugestão ou dificuldade em incrementá-lo, utilize meu fórum para conversarmos a respeito.

Um abraço a todos.

16 comentários

 José Cláudio Medeiros de Lima
16/10/2007 21h36

q

que djabo é lightbox? pq tu num bota um exemplo?

 Pedro Wallauschek
17/10/2007 08h31

Excelente plugin!

Olá Leandro!
Parabéns pelo plugin...
já utilizava o seu plugin antes mesmo de criá-lo para Jquery. Mas agora ficou bem melhor. Sua compatibilidade com os Browsers ficou 100%!!!

E pro colega preguiçoso acima q nem leu o artigo direito, o exemplo tá aqui: http://leandrovieira.com/projects/jquery/lightbox/

 Paulo Ronaldo Vilela de Lima Jr
17/10/2007 10h41

IEca 7 ta dando erro

Olá Leandro, primeiro parabens por mais uma materia pra la de util, mas gostaria de saber da compatibilidade do plugin com o IEca 7. na minha aplicação ele começa a abrir o modal da foto mas redireciona pra otra pagina só com a foto. será que isso é do plugin mesmo.?

valeu

 André Baltieri
17/10/2007 10h54

Show de Bola

JQuery mais uma vez salvando minha péle.
Muito bom esses plugins deles. Parabéns pela matéria.
Abraços

 Leandro Vieira
17/10/2007 11h10

Vamos lá

Jose: como Pedro falou veja o exemplo em: http://leandrovieira.com/projects/jquery/lightbox/
Pedro: Obrigado pelo parabéns.
Paulo: Cara, outras pessoas me notificam sobre essa questão. Acontece somente quando você tem apenas uma imagem. Certo? Isto é um bug do plugin que irei corrigí-lo. Fique ligado.
André: que bom que gostou.

Um abraço a todos.

 Paulo Ronaldo Vilela de Lima Jr
17/10/2007 11h16

Grande Leandro

Cara é verdade nao tinha me atentado a essa questão ! é so quando tem uma unica imagem mesmo. Bom espero ansioso pela atualização, abraço e sucesso.

 Pedro Wallauschek
18/10/2007 08h21

Problema

Leandro tenho uma função php q redimensiona a imagem no server e exibe na tela. Na versão 0.1 tava redondo, mas na 0.3 acontece o bug citado acima. Será q essa correção q vc irá fazer tem a ver com o meu problema?

 Paulo Ronaldo
19/10/2007 09h29

Leandro outro bugzinho

Cara quando a imagem é maior que a tela o plano de fundo no Scroll nao aparece, permanecendo o o sie visivel. nao sei se é bem um Bug, mas ta ai pra te avisar. Valeu

 Alexsandro Rosa de Mello
26/10/2007 17h52

Excelente Matéria.

A matéria está show, estou gostando desse JQuery, vou até ganhar uma grana esse mês com essa publicação. RS!, Mas, o que eu gostaria mesmo é se alguém desse uma ajuda para desenvolver uma barra de formatação de texto, igual a do hotmail, gmail, essas que ao clicar em negrito o texto fica literalmente em negrito, ao invés de mostrar as tags em html. Valeu, se alguém publicar isso vai ser show. Bom demais a imaster e os colunista!

 Paulo Ronaldo
16/11/2007 17h04

Correções

Fala Leandro blz??
cara alguma novidade em relação ao bug de uma unica foto ???

abraço

 Leandro Vieira
17/11/2007 10h57

Ao Paulo

A versão 0.3.1 corrigiu este bug. Hoje, lançei a versão 0.4 fique ligado aqui: http://leandrovieira.com/projects/jquery/lightbox/

Um abraço.

 Angelo Noguera
29/11/2007 10h44

Muito legal!

Parabens pelo trabalho e pelo tutorial. Seu plugin vai facilitar ainda mais a nossa vida!
Abraços

 Carlos Eduardo
01/10/2008 09h50

Versão 0.5

Ótimo tutorial.
Essas informações continuam válidas para a versão 0.5?
Estou perguntando porque não consegui implantar a funcionalidade. Bom, pela minha limitada experiência neste quesito, pode ser que eu esteja fazendo algo errado. De qualquer forma, agradeço desde já.
Obrigado pela atenção.

 Frederico Silva
29/09/2009 11h00

Tecla Esc para jQuery 1.2.6 ou superior

A tecla Esc (fecha a imagem) deixou de funcionar com a versão jQuery 1.2.6 e versão jquery-1.3.2.min.js
pelos testes que aqui fiz.
Alguem sabe como resolver isso?

Ótimo plugin e tutorial, obrigado

 Leandro Vieira
29/09/2009 14h07

@Frederico Silva

Frederico,

O plugin na realidade precisa ser atualizado para dar suporte a versão mais recente da jQuery. Isso será feito assim que possível.

Abraços.

 Luciano D. Mota
20/10/2009 13h35

Exelente

Muito bom tutorial, inclusive acabo de implementa-lo como library do codeigniter http://ldmotta.wordpress.com

Neste momento estou tentando implementar o lightbox com vídeo para esta biblioteca, caso alguém já tenha pensado nisto, por favor poste o link. Gracias.

Cancelar resposta

Qual a sua opinião?

Faça login abaixo ou cadastre-se rapidamente.


Sobre o Autor
Leandro Vieira trabalha com desenvolvimento web desde 2002. Em 2005, foi convidado para integrar o time de referências profissionais do iMasters. No mesmo ano, lançou o CD-ROM Dreamweaver + PHP + MySQL recordista de vendas do TI SHOP. Em 2006, lançou o CD-ROM Curso Web Sites com AJAX, uma das primeiras referências de Ajax no Brasil. Em 2007 lançou o Curso Interativo Adobe Dreamweaver CS3 abordando as novas funcionalidades e recursos do Dreaweaver CS3. Atualmente, Leandro Vieira é desenvolvedor web, professor do iPED Premier, criador de cursos exclusivos para o TI SHOP, editor do blog leandrovieira.com e cursando Comunicação Social (Publicidade e Propaganda) na UNIVALE.
3G

2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.