Na web moderna existem inúmeras técnicas que podem ser usadas para criar interações interessantes, mas o mais simples e elegante é geralmente o CSS, e especificamente as adições que vêm com o CSS3.
Antigamente, tínhamos que confiar em JavaScript para esse tipo de efeito, mas graças ao suporte crescente de CSS3 em todos os navegadores, agora é possível configurar efeitos como esses sem qualquer script. Infelizmente, ainda há navegadores (IE9 e abaixo) que não suportam CSS3, portanto você precisará de um substituto para navegadores legados ou tratar o efeito como um aprimoramento progressivo.
Hoje, vamos ver como podemos aplicar efeitos interessantes, mas interessantes, para mostrar e ocultar legendas de imagens.
Se você preferir seguir com o código, você pode baixe os arquivos aqui.
A primeira demonstração é a mais simples: a imagem voará para a direita para revelar a legenda.
Para nosso CSS, definiremos o posicionamento relativo para nossa classe demo-1 e, em seguida, definiremos a largura e a altura . Nós também esconderemos os elementos transbordados. Eu também coloquei alguns estilos básicos para minhas tags h2 e p , bem como minha tag de imagem. Agora, para nossa classe de efeito, definiremos o posicionamento como absoluto e forneceremos uma margem de -15px para a parte superior e inferior. Vamos usar a transição do CSS3 para criar um efeito suave. Nosso CSS é assim:
.demo-1 {position:relative;width:300px;height:200px;overflow:hidden;float:left;margin-right:20px;background-color:rgba(26,76,110,0.5)}.demo-1 p,.demo-1 h2 {color:#fff;padding:10px;left:-20px;top:20px;position:relative}.demo-1 p {font-family:'Lato';font-size:12px;line-height:18px;margin:0}.demo-1 h2 {font-family:'Lato';font-size:20px;line-height:24px;margin:0;}.effect img {position:absolute;margin:-15px 0;right:0;top:0;cursor:pointer;-webkit-transition:top .4s ease-in-out,right .4s ease-in-out;-moz-transition:top .4s ease-in-out,right .4s ease-in-out;-o-transition:top .4s ease-in-out,right .4s ease-in-out;transition:top .4s ease-in-out,right .4s ease-in-out}.effect img.top:hover {top:-230px;right:-330px;padding-bottom:200px;padding-left:300px}
Nossa segunda demonstração mostrará a imagem deslizando para baixo. Isso significa que quando você passa o mouse sobre a imagem, a legenda será revelada acima dela.
Nosso CSS será quase o mesmo que o primeiro demo, exceto que, desta vez, moveremos nossa imagem para baixo, configurando a propriedade inferior para -96px. Também usaremos a transição do CSS3 para criar um efeito suave:
.demo-2 {position:relative;width:300px;height:200px;overflow:hidden;float:left;margin-right:20px;background-color:rgba(26,76,110,0.5)}.demo-2 p,.demo-2 h2 {color:#fff;padding:10px;left:-20px;top:20px;position:relative}.demo-2 p {font-family:'Lato';font-size:12px;line-height:18px;margin:0}.demo-2 h2 {font-size:20px;line-height:24px;margin:0;font-family:'Lato'}.effect img {position:absolute;left:0;bottom:0;cursor:pointer;margin:-12px 0;-webkit-transition:bottom .3s ease-in-out;-moz-transition:bottom .3s ease-in-out;-o-transition:bottom .3s ease-in-out;transition:bottom .3s ease-in-out}.effect img.top:hover {bottom:-96px;padding-top:100px}h2.zero,p.zero {margin:0;padding:0}
Para nossa última demonstração, criaremos um efeito de cartão invertido. Isso significa que quando você passa o mouse sobre a imagem, ela gira em torno do eixo para revelar a descrição.
Em nosso CSS, vamos definir a imagem da figura para uma posição relativa e, em seguida, ocultar a visibilidade da face posterior. Também usaremos a transformação rotateY : -180 graus para figcaption e, em seguida, altere-a para 180 graus para o foco da imagem e da legenda:
.demo-3 {position:relative;width:300px;height:200px;overflow:hidden;float:left;margin-right:20px}.demo-3 figure {margin:0;padding:0;position:relative;cursor:pointer;margin-left:-50px}.demo-3 figure img {display:block;position:relative;z-index:10;margin:-15px 0}.demo-3 figure figcaption {display:block;position:absolute;z-index:5;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.demo-3 figure h2 {font-family:'Lato';color:#fff;font-size:20px;text-align:left}.demo-3 figure p {display:block;font-family:'Lato';font-size:12px;line-height:18px;margin:0;color:#fff;text-align:left}.demo-3 figure figcaption {top:0;left:0;width:100%;height:100%;padding:29px 44px;background-color:rgba(26,76,110,0.5);text-align:center;backface-visibility:hidden;-webkit-transform:rotateY(-180deg);-moz-transform:rotateY(-180deg);transform:rotateY(-180deg);-webkit-transition:all .5s;-moz-transition:all .5s;transition:all .5s}.demo-3 figure img {backface-visibility:hidden;-webkit-transition:all .5s;-moz-transition:all .5s;transition:all .5s}.demo-3 figure:hover img,figure.hover img {-webkit-transform:rotateY(180deg);-moz-transform:rotateY(180deg);transform:rotateY(180deg)}.demo-3 figure:hover figcaption,figure.hover figcaption {-webkit-transform:rotateY(0);-moz-transform:rotateY(0);transform:rotateY(0)}