更新
彩度低下はChromeでのみ機能していることに気付きました。 FF、IEおよび他のブラウザーで動作させるにはどうすればよいですか?(見出しが変更されました)
ここの提案に従って、カラー画像をグレースケールに変換しています: HTML/CSSで画像をグレースケールに変換
そして、それはうまく動作します(Chromeで): http://jsfiddle.net/7mNEC/
<img src="https://imagizer.imageshack.us/v2/350x496q90/822/z7ds.jpg" />
// CSSS
img {
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");
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
filter: gray;
}
img:hover {
filter: none;
cursor: pointer;
}
しかし、私は例えばの彩度を削除することはできませんマウスオーバー。
私が間違っていることのアイデアはありますか?
ブラウザのプレフィックスCSSプロパティごとにグレースケールを逆にするだけです。
img:hover {
filter: none;
-webkit-filter: grayscale(0%);
-moz-filter: grayscale(0%);
-ms-filter: grayscale(0%);
-o-filter: grayscale(0%);
cursor: pointer;
}
次のようなトランジションを追加すると、さらにクールになります。
img {
filter: none;
-webkit-filter: grayscale(100%);
-moz-filter: grayscale(100%);
-ms-filter: grayscale(100%);
-o-filter: grayscale(100%);
cursor: pointer;
transition: all 300ms ease;
}
img:hover {
filter: none;
-webkit-filter: grayscale(0%);
-moz-filter: grayscale(0%);
-ms-filter: grayscale(0%);
-o-filter: grayscale(0%);
}
この質問はsaturationに関するものなので、 saturate()
filter の方が適している可能性があります。これにより、過飽和色(100%を超える値)も可能になります。
img {
filter: saturate(0%);
}
img:hover {
filter: saturate(300%);
}