A volte basta spostare un elemento, cambiando punto di vista, per risolvere un problema apparentemente insuperabile. Quando poi si ha a che fare con compatibilità tra i browser e CSS, inventarsi soluzioni “spettacolari” (acrobazie direi) è all’ordine del giorno. Quello che vi mostro è un modo semplice per applicare bordi arrotondati a delle immagini utilizzando -moz-border-radius, disponibile per Mozilla FireFox e -webkit-border-radius, per Safari e Google Chrome.
Normalmente questi attributi CSS vengono applicati a container come il div:
1 2 3 4 5 6 7 8 | div#box { width:100px; height:100px; -moz-border-radius:16px; -webkit-border-radius:16px; background: #eee; border: 1px solid #666; } |
Con codice HTML del tipo:
Ottenendo:

Volendo fare la stessa cosa su un’immagine, ci si accorge che il risultato è parzialmente raggiunto! Utilizzando un CSS di questo tipo:
1 2 3 4 5 6 | img#round-border { -moz-border-radius:8px; -webkit-border-radius:8px; background: #eee; border: 1px solid #666; } |
Su una formattazione HTML come questa:
1 | <img id="round-border" src="images/undolog.png" alt="Round Image Test" /> |
Safari e Google Chrome rispondono bene:

Mentre FireFox stupisce mostrando:

Com’è possibile vedere dallo screenshot qui sopra, in FireFox 3.5.7 il bordo “arrotondato” sembra esserci ma l’immagine è rimasta squadrata!
Un semplice espediente – utile in particolari casi – permette di risolvere agevolmente il problema:
1 2 3 4 5 6 | div#box { -moz-border-radius:8px; -webkit-border-radius:8px; background: url(http://dominio.com/images/undolog.png) no-repeat; border: 1px solid #666; } |
In pratica invece di utilizzare direttamente il tag img, sfruttiamo un contenitore qualsiasi – in questo caso un div – impostando il suo sfondo con l’immagine che vogliamo visualizzare con i bordi arrotondati.
Questa soluzione ha ovviamente una serie di inconvenienti:
- Abbiamo perso il tag
img(con il suo attributoalt), di conseguenza nel DOM html non esiste nessuna immagine, il ché significa che eliminando i fogli di stile la nostra immagine scompare - Dovendo definire un contenitore (nel nostro caso un
div) tramite i fogli di stile, dobbiamo conoscere in partenza la sua dimensione
Come ho più volte scritto su questo blog sarebbe proprio il caso che lo “standard” CSS (2 o 3 che sia) modificasse il suo nome in “ognuno fa quello che gli pare” …








11
lol
Non c’è nulla di più vero e la cosa triste è che con il CSS 3 la “separazione” sta aumentando. D’altra parte non darei tutta la colpa ai realizzatori dei browser, alcuni standard fissati da W3C sono davvero vaghi.