Sto cercando di prendere un'icona colorata (e sarà un collegamento) e trasformarla in scala di grigi finché l'utente non posiziona il mouse sopra l'icona (dove poi colorerà l'immagine).
È possibile farlo e in un modo supportato da IE e Firefox?
Sto cercando di prendere un'icona colorata (e sarà un collegamento) e trasformarla in scala di grigi finché l'utente non posiziona il mouse sopra l'icona (dove poi colorerà l'immagine).
È possibile farlo e in un modo supportato da IE e Firefox?
Risposte:
Esistono numerosi metodi per ottenere ciò, che descriverò in dettaglio con alcuni esempi di seguito.
img.grayscale {
filter: url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale"); /* Firefox 3.5+ */
filter: gray; /* IE6-9 */
-webkit-filter: grayscale(100%); /* Chrome 19+ & Safari 6+ */
}
img.grayscale:hover {
filter: none;
-webkit-filter: grayscale(0%);
}
Puoi trovare un articolo relativo a questa tecnica qui .
Questo approccio richiede due copie di un'immagine: una in scala di grigi e l'altra a colori. Utilizzando il CSS :hover
psuedoselector, puoi aggiornare lo sfondo del tuo elemento per alternare tra i due:
#yourimage {
background: url(../grayscale-image.png);
}
#yourImage:hover {
background: url(../color-image.png};
}
Ciò potrebbe anche essere ottenuto utilizzando un effetto hover basato su Javascript come la hover()
funzione di jQuery nello stesso modo.
La libreria desaturata è una libreria comune che consente di passare facilmente da una versione in scala di grigi a una versione a colori di un dato elemento o immagine.
Risposta qui: Converti un'immagine in scala di grigi in HTML / CSS
Non è nemmeno necessario utilizzare due immagini che suonano come un dolore o una libreria di manipolazione delle immagini, puoi farlo con il supporto del browser incrociato (versioni attuali) e usare semplicemente CSS. Questo è un approccio di miglioramento progressivo che ricade solo sulle versioni a colori sui browser meno recenti:
img {
filter: url(filters.svg#grayscale);
/* Firefox 3.5+ */
filter: gray;
/* IE6-9 */
-webkit-filter: grayscale(1);
/* Google Chrome & Safari 6+ */
}
img:hover {
filter: none;
-webkit-filter: none;
}
e il file filters.svg come questo:
<svg xmlns="http://www.w3.org/2000/svg">
<filter id="grayscale">
<feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0" />
</filter>
</svg>
Uso il seguente codice su http://www.diagnomics.com/
Transizione graduale dal b / n al colore con effetto di ingrandimento (scala)
img.color_flip {
filter: url(filters.svg#grayscale); /* Firefox 3.5+ */
filter: gray; /* IE5+ */
-webkit-filter: grayscale(1); /* Webkit Nightlies & Chrome Canary */
-webkit-transition: all .5s ease-in-out;
}
img.color_flip:hover {
filter: none;
-webkit-filter: grayscale(0);
-webkit-transform: scale(1.1);
}
Ecco una demo. Funziona anche in IE7:
http://james.padolsey.com/demos/grayscale/
e
http://james.padolsey.com/javascript/grayscaling-in-non-ie-browsers/