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!
Olá..gostaria de colocar este feito no meu Portfólio, porém não estou conseguindo salvar o arquivo, não baixa, vc poderia me ajudar?
Grata!
Qual está sendo o problema, Luanna?
Não estou conseguindo baixar o arquivo que vc disponibilizou no final?
Ele informa um erro e não abaixa
Olá, ótimo post, entretanto não consegui mudar a direção da transição, no caso para a minha necessidade a imagem deveria subir e não descer, tentei trocar o top por bottom, mas não deu certo, tens uma sugestão?