Исходя из ответа brillout.com , а также ответа Романа Нурика и несколько ослабив требование «без SVG», вы можете обесцветить изображения в Firefox, используя только один SVG-файл и немного CSS.
Ваш SVG-файл будет выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1"
baseProfile="full"
xmlns="http://www.w3.org/2000/svg">
<filter id="desaturate">
<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>
Сохраните это как resources.svg, теперь его можно использовать повторно для любого изображения, которое вы хотите изменить на оттенки серого.
В вашем CSS вы ссылаетесь на фильтр, используя специфичное для Firefox свойство filter
:
.target {
filter: url(resources.svg#desaturate);
}
При необходимости добавьте проприетарные MS, примените этот класс к любому изображению, которое вы хотите преобразовать в оттенки серого (работает в Firefox> 3.5, IE8) .
edit : Вот хороший пост в блоге , в котором описано использование нового свойства CSS3 filter
в ответе SalmanPK в сочетании с описанным здесь подходом SVG. Используя этот подход, вы получите что-то вроде:
img.desaturate{
filter: gray; /* IE */
-webkit-filter: grayscale(1); /* Old WebKit */
-webkit-filter: grayscale(100%); /* New WebKit */
filter: url(resources.svg#desaturate); /* older Firefox */
filter: grayscale(100%); /* Current draft standard */
}
Дополнительная информация о поддержке браузера здесь .