På den moderna webben finns det många tekniker som kan användas för att skapa intressanta interaktioner, men det enklaste och mest eleganta är vanligtvis CSS, och specifikt de tillägg som kom med CSS3.
Tidigare måste vi förlita oss på JavaScript för denna typ av effekt, men tack vare det ständigt ökande stödet till CSS3 över webbläsare är det nu möjligt att ställa in effekter som dessa utan att skript alls. Det finns tyvärr fortfarande webbläsare (IE9 och under) som inte stöder CSS3, så du behöver antingen en återgång för äldre webbläsare eller för att behandla effekten som en progressiv förbättring.
Idag ska vi titta på hur vi kan tillämpa snygga men snygga svängareffekter för att visa och dölja bildtexter.
Om du föredrar att följa med koden kan du ladda ner filerna här.
Den första demo är vår enklaste: bilden kommer att flyga till höger för att avslöja bildtexten.
För vår CSS ställer vi in relativ positionering för vår demo-1- klass och ställer sedan in bredd och höjd . Vi kommer också att gömma de överflödade elementen. Jag har också lagt några grundläggande stilar för mina h2- och p- taggar samt min bildtagg. Nu för vår effektklass ställer vi positioneringen till absolut och ger den en marginal på -15 px till toppen och botten. Vi kommer att använda CSS3: s övergång för att skapa en smidig effekt. Vår CSS ser så här ut:
.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}
Vår andra demo visar bilden som glider ner. Det betyder att när du håller muspekaren över bilden visas bildtexten ovanför den.
Vår CSS kommer att vara nästan densamma som den första demoen, förutom att den här gången kommer vi att flytta vår bild nedåt genom att ställa in egenskapen botten till -96px. Vi använder också CSS3: s övergång för att skapa en smidig 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}
För vår senaste demo skapar vi en blinkande korteffekt. Det innebär att när du svävar musen på bilden kommer den att snurra runt på sin axel för att avslöja beskrivningen.
I vår CSS kommer vi att sätta bildbilden till en relativ position och sedan dölja backface-synligheten . Vi använder också rotateY transformen: -180 grader för figcaption och sedan ändra den till 180 grader för svängaren av både bilden och bildtexten:
.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)}