このサイトでこのスクリプトを見つけました。これは、フェード効果中に透明部分が黒で塗りつぶされることなく、IEで透明な.pngをフェードイン/アウトするのに役立ちます。
var i;
for (i in document.images) {
if (document.images[i].src) {
var imgSrc = document.images[i].src;
if (imgSrc.substr(imgSrc.length-4) === '.png' || imgSrc.substr(imgSrc.length-4) === '.PNG') {
document.images[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='crop',src='" + imgSrc + "')";
}
}
}
このスクリプトはこのstackoverflowユーザーによって作成されたもので、私のサイトでは完全に機能します。ただし、少し変更したいと思います。このスクリプトは、私のページ上のすべての.pngファイルを検索し、フィルターを適用します。ただし、サイトに透明な.pngファイルが多数あるため、パフォーマンスの問題が発生する可能性がありますが、このフィルターを適用する必要があるのはそのうちの1つだけです。これは、ページのスクロール中にjQueryを使用してフェードインおよびフェードアウトする固定位置メニューのDIV背景画像です。
誰かがこのスクリプトを変更して、1つの画像を提供するか、getElementById( "menu")を使用して、このフィルターを適用できるようにするのを手伝ってもらえますか。私が試したことは何も機能していないようで、CSSにフィルターを配置することも機能しなかったので、javascriptの方法がうまくいくようです。すべてではなく、1つの.pngで使用する必要があります。
これはdiv#menuの背景画像であるため、画像自体にはIDがありませんが、もちろんdivにはあります。どんな助けでも大歓迎です。