Ajax Image Gallery
Postado por: Pedro Rogério em
Criar galerias de imagens provavelmente é o que os desenvolvedores mais fazem no dia-a-dia, e pra facilitar isso, vou deixar aqui um exemplo de um código paraa criar uma galeria de imagens com a utilização de Ajax.
O HTML é extremamente simples, crio um elemento para englobar a imagem maior, e os thumbnails são links para as imagens maiores:
<div id="container">
<div id="placeholder">
<img id="current" src="imgs/img1.jpg" alt="Galeria de Imagens com Ajax" title="Galeria de Imagens com Ajax" />
</div>
<ul>
<li><a class="active" href="imgs/img1.jpg" title="Galeria de Imagens com Ajax" rel="alternate"><img src="imgs/thumb-img1.jpg" alt="Galeria de Imagens com Ajax" title="Galeria de Imagens com Ajax" /></a></li>
<li><a href="imgs/img2.jpg" title="Galeria de Imagens com Ajax" rel="alternate"><img src="imgs/thumb-img2.jpg" alt="Galeria de Imagens com Ajax" title="Galeria de Imagens com Ajax" /></a></li>
<li><a href="imgs/img3.jpg" title="Galeria de Imagens com Ajax" rel="alternate"><img src="imgs/thumb-img3.jpg" alt="Galeria de Imagens com Ajax" title="Galeria de Imagens com Ajax" /></a></li>
...
</ul>
</div>
E depois o resto fica por conta do JavaScript:
//Flag criada para evitar que 2 imagens sejam abertas ao mesmo tempo
var working = false;
$('li a').click(function(e){
e.preventDefault();
if($(this).hasClass('active')) return;
if(working){
return false;
}
working = true;
var imgUrl = $(this).attr('href'),
img = new Image();
$('li a').removeClass('active');
$(this).addClass('active');
$("#current").remove();
$('#placeholder').addClass('loading');
$(img).load(function(){
$(this).css({display: 'none'});
$('#placeholder').removeClass('loading').append(img);
$(img).fadeIn();
working = false;
}).attr('src',imgUrl).attr('id','current');
});













Muito legal o seu exemplo de galeria.
Só um ajuste: Não está sendo utilizado AJAX em nenhum momento nesta galeria…
Ao contrário do que muitos pensam a função “.load()” nas imagens não faz uma requisição AJAX. Ela simplesmente adiciona um handler que é executado quando a imagem termina de carregar.
Nessa galeria apenas temos a impressão de que está usando AJAX, porém o que temos é apenas um pré-loader sendo escondido quando a imagem termina de carregar.
Ainda não é possível carregar uma imagem usando AJAX!
+1
Não cheguei a fazer testes, mas será que com AJAX não tem como pegar imagens convertidas pra base64?
Muito show!
Muito bonita esta galeria! Estava precisando mesmo de inspiração para meu modelo de galeria para o blog, e este post foi de grande vália que sem querer acabei encontrando acessando o link de outro blog que você escreve também (CSS no Lanche)!
Um abraço!