På den moderne web er der mange teknikker, der kan bruges til at skabe interessante interaktioner, men den enkleste og mest elegante er normalt CSS, og specifikt de tilføjelser, der fulgte med CSS3.
Tilbage i gamle dage måtte vi stole på JavaScript for denne slags effekt, men takket være den stadigt stigende støtte til CSS3 på tværs af browsere er det nu muligt at oprette effekter som disse uden nogen scripting overhovedet. Der er desværre stadig browsere (IE9 og nedenfor), der ikke understøtter CSS3, så du vil enten have brug for en tilbagesendelse til gamle browsere eller for at behandle effekten som en progressiv forbedring.
I dag skal vi se på, hvordan vi kan anvende kølige, men pæne svæveffekter til at vise og skjule billedtekster.
Hvis du foretrækker at følge med koden, kan du download filerne her.
Den første demo er vores enkleste: billedet flyver til højre for at afsløre billedteksten.
For vores CSS vil vi indstille relative positionering for vores demo-1 klasse og derefter oprette bredden og højden . Vi vil også skjule de overflødige elementer. Jeg har også lagt nogle grundlæggende stilarter til min h2 og p tags samt min billedmærke. Nu for vores effektklasse vil vi sætte positioneringen til absolutte og give den en margin på -15 px til toppen og bunden. Vi vil bruge CSS3's overgang til at skabe en jævn effekt. Vores CSS ser sådan ud:
.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}
Vores anden demo viser billedet, der glider ned. Dette betyder, at når du svæver musen over billedet, vil billedet blive afsløret over det.
Vores CSS vil være næsten det samme som den første demo, bortset fra at denne gang vil vi flytte vores billede nedad ved at indstille ejendommen ned til -96px. Vi bruger også CSS3's overgang for at skabe en jævn effekt:
.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}
Til vores sidste demo skaber vi en blinkende korteffekt. Dette betyder, at når du svæver musen på billedet, vil den dreje rundt på sin akse for at afsløre beskrivelsen.
I vores CSS, sætter vi billedbilledet til en relativ position og gemmer derefter bagsiden-synligheden . Vi vil også bruge rotateY transformen: -180 grader til figcaption og derefter ændre den til 180 grader for svingeren af både billedet og billedteksten:
.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)}