グレースケールで表示する必要があるページにいくつかの画像を表示しようとしています。ただし、マウスをホバーするとスムーズに色に移行します。IE、Chrome、Firefoxでうまく機能するようにしましたが、Safari5.xでは機能しません。問題は、SafariforMacとSafariforWindowsにあります。これが私がこれまでに持っているコードです:
filter: url('desaturate.svg#greyscale');
filter: gray;
-webkit-filter: grayscale(1);
最初の行は、外部の.svgフィルターをロードします(古いバージョンのFirefoxのバグurl("data:
を回避したいので、...ルールでインライン化しません)。
2行目はIE用で、と同じように機能するようfilter:progid:DXImageTransform.Microsoft.BasicImage(grayScale=1);
です。
Webkitに関する最後の行は、Safari6以降とChromeで機能するはずです。
Safari 5.xで画像をグレースケールで表示するCSSルールはありますか?または、それが不可能な場合、誰かがjavascriptソリューション、できればグレースケールとの間のアニメーションを処理するソリューションを推奨できますか?グレースケール画像を使用したサーバー側のハッキングは避けたいと思います。これは、HTMLを台無しにし、条件付きでHTMLを提供するために厄介なブラウザー検出を行う必要があるためです。
ありがとう
編集:
これは「注目すべき質問」であることが判明したため、Safari 6以降でのみ機能する回答、またはデータURLに.svgファイルを含む回答をここに投稿し続けないでください。私がOPを書いたとき、今日非常に古いと考えられているSafariとFirefoxのいくつかのバージョンをサポートすることが重要でしたが、それでもそれが私の最初の質問でした。
最近のブラウザでは、数行のCSSコードでグレースケールフィルタリングを簡単に実行できることをよく知っていますが、このプロジェクトを行った時点では、グラフィックデザイナーはSafari 5.xを使用し、クライアントはFirefox3.xを使用していました。私のために働いた解決策は、Gionaが提案したものでした。つまり、Modernizrを使用してcssフィルタリングをテストし、サポートされていない場合はjavascriptにフォールバックすることです。
もし私が今日同じことをしていたら、私は両方に彼らのブラウザを更新するように言っているでしょう!