Ajax Image Gallery

Postado por: Pedro Rogério em
Ajax Image Gallery

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');
	});

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Gostou desse post?

Assine o nosso Feed RSS, siga-nos no Twitter, ou simplesmente nos recomende a seus amigos!

Sobre Pedro Rogério

Pedro Rogério é desenvolvedor web por paixão, não saberia fazer melhor outra coisa. Além de escrever para o Pinceladas da Web também escreve para o CSS no Lanche, blog voltado ao desenvolvimento front-end.

5 Responses to “Ajax Image Gallery”

  1. Vitor disse:

    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!

  2. 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!

Leave a Reply