Angoli arrotondati con CSS

In molti mi chiedono come poter creare degli angoli arrotondati utilizzando solamente CSS, fino a poco tempo fa conoscevo la classica tecnica di inserimento degli angoli come immagini di sfondo all’interno di elementi opportunatamente posizionati.
Altri invece utilizzano il metodo border-radius di Mozilla, che ovviamente funziona solo con i browser come Firefox, Netascape e Mozilla.
Da un paio di giorni però ho scoperto un’altro metodo molto efficace.

E’ da premettere che questa soluzione non funziona con Internet Explorer 5.0.2 per Mac, colpa di alcune mancanze e bug di quest’ultimo.

Detto questo iniziamo con le presentazioni. La tecnica è stata trovata su Spiffy Corners ed è veramente carina, ma analiziamola.

Cliccando su “Show Me the Code” verrà visualizzato tutto il codice CSS e XHTML. Partiamo da quest’ultimo:

<div>
<b class="spiffy">
<b class="spiffy1"><b></b></b>
<b class="spiffy2"><b></b></b>
<b class="spiffy3"></b>
<b class="spiffy4"></b>
<b class="spiffy5"></b>
</b> <div class="spiffy_content">
<!-- Your Content Goes Here -->
</div>
<b class="spiffy">
<b class="spiffy5"></b>
<b class="spiffy4"></b>
<b class="spiffy3"></b>
<b class="spiffy2"><b></b></b>
<b class="spiffy1"><b></b></b>
</b>
</div>

Come si vede ci sono una serie di tag <b> tutti con classi differenti e nel centro di questi tag c’è un’elemento div per il contenuto.
Osservando con più attenzione si nota che i tag <b> si riflettono sopra e sotto proprio come uno specchio.

Adesso quindi dobbiamo guardare il CSS magico:

.spiffy{
display:block
}
.spiffy *{
display:block;
height:1px;
overflow:hidden;
background:#0a67e6
}

Allora, questa parte non fa altro che far diventare dei division block, i tag <b> con la classe spiffy. Poi a tutto il loro interno, oltre che rifare la stessa cosa, setta un’altezza di 1 pixel, gli da un background e setta l’overflow su hidden.

.spiffy1{
border-right:1px solid #95bdf4;
padding-right:1px;
margin-right:3px;
border-left:1px solid #95bdf4;
padding-left:1px;
margin-left:3px;
background:#478dec;
}
.spiffy2{
border-right:1px solid #e6effc;
border-left:1px solid #e6effc;
padding:0px 1px;
background:#3883ea;
margin:0px 1px;
}
.spiffy3{
border-right:1px solid #3883ea;
border-left:1px solid #3883ea;
margin:0px 1px;
}
.spiffy4{
border-right:1px solid #95bdf4;
border-left:1px solid #95bdf4;
}
.spiffy5{
border-right:1px solid #478dec;
border-left:1px solid #478dec;
}

Questa è la vera magia, qui vengono date le regole ad ogni “strisca” (il tag <b>) di un pixel, che da sinistra verso destra vengono create.

Quindi, ogni striscia ha un suo padding e un suo margin in modo da retrarla abbastanza da creare ogni singola parte dell’angolo.
Da notare che viene assegnato un bordo sia a destra che a sinistra di un colore più chiaro in modo da ricreare l’effetto antialiasing.

.spiffy_content{
padding:0px 5px;
background:#0a67e6;
}

Per ultimo, il contenuto con il suo background e il suo padding.

Ovviamente questa soluzione è un pò complessa e richiede un bel po’ di tempo per realizzarla a mano, ma con lo strumento di Spiffy Corners è veramente un’attimo.. e volendo si potrebbero pure creare delle parti sfumate o con un background.. ma lascio a voi l’immaginazione.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>