Ícone do site Eu Faço Programas

Efeito troca de imagens com jQuery

Hoje trabalharemos uma efeito super simples de ser implementado mas que dá uma oportunidade de incrementação bacana em seu projeto web: Uma imagem, ao receber o hover do usuário, deslizará, mostrando outra imagem. Quando o usuário retirar o mouse, a imagem inicial é mostrada novamente – clique aqui para ver o efeito funcionando.

O primeiro passo será  a montagem do HTML. Defina uma div e dentro dela coloque duas imagens quaisquer, identificando-as com classes ou ids. No exemplo acima utilizei uma div principal e dentro dela três divs, com duas imagens em cada.

<div class="principal">
<div class="trocar"><img class="back" src="images/im_01_back.jpg" alt="imagem" />
<img class="front" src="images/im_01.jpg" alt="imagem" /></div>
<div class="trocar"><img class="back" src="images/im_02_back.jpg" alt="imagem" />
<img class="front" src="images/im_02.jpg" alt="imagem" /></div>
<div class="trocar"><img class="back" src="images/im_03_back.jpg" alt="imagem" />
<img class="front" src="images/im_03.jpg" alt="imagem" /></div>
</div>

Com a marcação HTML pronta definiremos o estilo. Aqui o único estilo realmente necessário para a ‘animação funcionar’ deverá ser aplicado na div que contém as duas imagens, com indicação de estas devem se sobrepor. Para isso defina a posição da imagem como no exemplo abaixo, e overflow hidden na div mãe.

.trocar img{
position:absolute;
top:0;
left:0;
width: 250px;
height:150px;
}

.trocar{
width:270px;
height:150px;
float:left;
position:relative;
overflow:hidden;
padding: 5px;
}

Com isso, após inserir o link da biblioteca jQuery em sua página, vamos trabalhar o script. Como foi dito anteriormente, que será feito é muito simples: Com as imagens estão posicionadas uma em cima da outra, ao hover na div, a imagem da frente terá sua posição alterada. Coloque para top um valor superior ao tamanho de sua div, caso queira que a imagem “caia”; caso preferir, sete o valor de top para negativo e a imagem deslizará para cima. Assim que o usuário retira o mouse da div, a imagem da frente tem seu valor de top retornado à zero. Para evitar que qualquer animação esteja acontecendo no momento, utilizamos ainda o comando stop(), cancelando qualquer comando em execução no momento e alterando seu valor de top.

$(function() {
$('.trocar').hover(
function(){
$(this).children('.front').stop().animate({"top" : '300px'},700); //Trabalha no hoverIn
},
function(){
$(this).children('.front').stop().animate({"top":'0'},400); //Trabalha no hoverOut
});
});

Prontinho! Um efeito simples mas ao mesmo tempo bacana e que pode ser aplicado em seu projeto web em questão de minutos!

Para baixar os arquivos desse tutorial, clique aqui!

// Comente!

comentários

Sair da versão mobile