CSS3: effetto foto piegata!

L’effetto foto piegataPAGE CURL EFFECT – da un po’ di tempo circola come “nuovo” trend nel mondo del web: lo stile ricorda l’effetto di una cartolina piegata ai lati. Vediamo come realizzare questo effetto direttamente con le ombre CSS3, da applicare agli angoli inferiori di un elemento, e deformato con l’effetto CSS3 skew.

Vogliamo ottenere tutto questo con l’utilizzo dei soli CSS: in particolare degli pseudo-elementi :before e :after. L’effetto finale risulta molto ben fatto e sicuramente subito utilizzabile per tutti i browser (mediante l’utilizzo dei tag proprietari dei vari browser), escluse però tutte le versioni di Internet Explorer!

CSS3: Galleria di immagini con ombre e effetto foto piegata!

Dobbiamo realizzare una galleria di immagini per un portfolio online? Ecco di seguito una pagina di esempio e il codice che ci serve:

Per cominciare, organizziamo le illustrazioni in una semplice lista non ordinata di elementi. Se vogliamo testare velocemente, ci possiamo affidare a un servizio che mette a disposizione immagini placehorder, o se preferite “segnaposto”, da inserire in pagine Web di test. Per questa demo ho scelto picsum.photos:

	
  • picsum
  • picsum
  • picsum
  • picsum
  • picsum
  • picsum

Applichiamo gli stili CSS (nell’ordine che vedete sotto) in modo tale che le immagini si dispongano una a fianco all’altra, e che abbiano un effetto di ombra interna ed esterna, ottenuta rispettivamente con le propietà CSS3 rgba() e rgba() inset:

ul.box li {
	list-style-type: none;
margin: 0 30px 30px 0; padding: 0;
width: 250px;
height: 150px; border: 1px solid #efefef;
position: relative; float: left; background: #ffffff; /* per i vecchi browser */ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 60px rgba(0, 0, 0, 0.1) inset; -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.27), 0 0 40px rgba(0, 0, 0, 0.06) inset; }

Fatto questo, trasformiamo gli oggetti con i CSS3: ecco come applicare gli stili per ottenere l’ombra esterna "piegata"!
Inseriamo due elementi posizionati absolute dietro ogni elemento della lista (con il corretto z-index), con gli pseudo-elementi :after e :before. Essi vengono poi ruotati con la proprietà transform:rotate, e deformati con la proprietà skew, che applica una inclinazione lungo gli assi X e Y.
Ecco cosa inserire:

ul.box li:after { 
	z-index: -1; 
	position: absolute; 
	background: transparent;
	width: 70%;
	height: 55%; 
	content: ''; 
	right: 10px; 
	bottom: 10px; 
	transform: skew(15deg) rotate(6deg);
	-webkit-transform: skew(15deg) rotate(6deg);
	-moz-transform: skew(15deg) rotate(6deg);
	box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
	-webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
	-moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);  } 
ul.box li:before {
	z-index: -2; 
	position: absolute; 
	background: transparent; 
	width: 70%; 
	height: 55%; 
	content: '';
	left: 10px;
	bottom: 10px;
	transform: skew(-15deg) rotate(-6deg);
	-webkit-transform: skew(-15deg) rotate(-6deg); 
	-moz-transform: skew(-15deg) rotate(-6deg);
	box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
	-webkit-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); 
	-moz-box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); }