Suite à la réponse de brillout.com, et aussi la réponse de Roman Nurik, et en relâchant quelque peu l'exigence "pas de SVG", vous pouvez désaturer les images dans Firefox en n'utilisant qu'un seul fichier SVG et un peu de CSS.
Votre fichier SVG ressemblera à ceci :
Enregistrez-le sous le nom resources.svg, vous pourrez le réutiliser à partir de maintenant pour toute image que vous souhaitez convertir en niveaux de gris.
Dans votre CSS, vous référencez le filtre en utilisant la propriété spécifique à Firefox filter
:
.target {
filter: url(resources.svg#desaturate);
}
Ajoutez également les spécifiques à MS si vous en avez envie, appliquez cette classe à toute image que vous souhaitez convertir en niveaux de gris (fonctionne dans Firefox >3.5, IE8).
edit: Voici un billet de blog intéressant qui décrit l'utilisation de la nouvelle propriété CSS3 filter
dans la réponse de SalmanPK en concert avec l'approche SVG décrite ici. En utilisant cette approche, vous aboutiriez à quelque chose comme :
img.desaturate{
filter: gray; /* IE */
-webkit-filter: grayscale(1); /* Ancien WebKit */
-webkit-filter: grayscale(100%); /* Nouveau WebKit */
filter: url(resources.svg#desaturate); /* ancien Firefox */
filter: grayscale(100%); /* Standard actuel en cours de rédaction */
}
Plus d'informations sur la prise en charge des navigateurs ici.
14 votes
"Il n'a pas besoin d'être compatible avec IE (et je suppose qu'il ne le sera pas)" ?? IE fournit un ensemble de filtres DX depuis 1997 (IE4) qui font ce travail avec simplement du CSS et bien plus encore. Maintenant, ils ont abandonné les filtres DX dans IE10 et suivent strictement les filtres basés sur SVG standards. Vous voudrez peut-être jeter un œil à ce lien et ce démo.
8 votes
@vulcanraven Ce n'est pas vraiment du 'simple CSS' - si vous désactivez le script actif dans IE, les filtres cessent de fonctionner.
3 votes
@robertc, c'est à peu près ça. En revanche, si vous désactivez JavaScript dans n'importe quel navigateur, presque toutes les applications riches sur Internet, y compris Stackoverflow, cesseront de fonctionner (sauf si le développeur web a mis en place une version de secours en HTML uniquement).
2 votes
Il suffit d'utiliser le CSS stackoverflow.com/questions/286275/griser-une-image-avec-du-css/… pour obtenir ma réponse dans cette question.