Sul web moderno ci sono numerose tecniche che possono essere utilizzate per creare interazioni interessanti, ma il più semplice ed elegante è solitamente il CSS, e in particolare le aggiunte fornite con CSS3.
Ai vecchi tempi, dovevamo affidarci a JavaScript per questo tipo di effetto, ma grazie al supporto sempre crescente per CSS3 attraverso i browser, ora è possibile impostare effetti come questi senza alcuno script. Ci sono purtroppo ancora i browser (IE9 e successivi) che non supportano CSS3, quindi avrai bisogno di un fallback per i browser legacy o per trattare l'effetto come un miglioramento progressivo.
Oggi esamineremo come applicare effetti di hover fantastici, ma puri per mostrare e nascondere le didascalie delle immagini.
Se preferisci seguire il codice, puoi farlo scarica qui i file.
La prima demo è la nostra più semplice: l'immagine volerà alla sua destra per rivelare la didascalia.
Per il nostro CSS imposteremo il posizionamento relativo per la nostra classe demo-1 e quindi imposteremo la larghezza e l' altezza . Nasconderemo anche gli elementi in overflow. Ho anche messo alcuni stili di base per i miei tag h2 e p , oltre al mio tag immagine. Ora per la nostra classe di effetti imposteremo il posizionamento su assoluto e dandogli un margine di -15px in alto e in basso. Useremo la transizione di CSS3 per creare un effetto morbido. Il nostro CSS è simile al seguente:
.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}
La nostra seconda demo mostrerà l'immagine che scorre verso il basso. Ciò significa che quando si passa il mouse sopra l'immagine, la didascalia verrà rivelata sopra di essa.
Il nostro CSS sarà quasi la stessa della prima demo, tranne che questa volta sposteremo la nostra immagine verso il basso impostando la proprietà in basso a -96px. Useremo anche la transizione di CSS3 per creare un effetto uniforme:
.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}
Per la nostra ultima demo, creeremo un effetto di carta inversa. Ciò significa che quando si posiziona il mouse sull'immagine, lo farà ruotare attorno al suo asse per rivelare la descrizione.
Nel nostro CSS, imposteremo l'immagine della figura in una posizione relativa e quindi nasconderemo la visibilità del backface . Useremo anche la trasformazione rotateY : -180 gradi per la figatura e poi la cambieremo a 180 gradi per il passaggio del mouse sia dell'immagine che della didascalia:
.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)}