FireFox 3.5.7: come risolvere il difetto dei bordi arrotondati su un’immagine
giovedì 21 gennaio, 2010A 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:
-
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:
-
<div id="box"></div>
Ottenendo:

Volendo fare la stessa cosa su un'immagine, ci si accorge che il risultato è parzialmente raggiunto! Utilizzando un CSS di questo tipo:
-
img#round-border {
-
-moz-border-radius:8px;
-
-webkit-border-radius:8px;
-
background: #eee;
-
border: 1px solid #666;
-
}
Su una formattazione HTML come questa:
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:
-
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" ...










19

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.