IE8 で、RGBA 背景とボックス シャドウの両方を div に適用した場合の効果を模倣しようとしています。不透明な背景を設定すると、Microsoft の「Shadow」フィルターを使用してボックス シャドウ効果をうまく実現できます。背景を「透明」に設定すると、「グラデーション」フィルターを適用して RGBA 背景を取得できます。しかし、そのように両方のフィルターを組み合わせようとすると、
div#translucentBG {
zoom : 1;
background : transparent;
filter:
progid:DXImageTransform.Microsoft.Gradient(StartColorStr=#80464646, EndColorStr=#80464646),
progid:DXImageTransform.Microsoft.Shadow(Color=#ffffff, Strength=5, Direction=0),
progid:DXImageTransform.Microsoft.Shadow(Color=#ffffff, Strength=5, Direction=90),
progid:DXImageTransform.Microsoft.Shadow(Color=#ffffff, Strength=5, Direction=180),
progid:DXImageTransform.Microsoft.Shadow(Color=#ffffff, Strength=5, Direction=270);
}
div には正しいボックスの影が付きますが、背景は不透明です #464646 。すべてのシャドウ フィルターを削除するだけで、魔法のように div が再び半透明になります。これはかなりイライラします。IE は両方の効果を完全に別々にレンダリングするので、それらを組み合わせたときになぜ失敗するのか想像できません。おそらく回避策や代替方法が利用できることはわかっていますが、私が本当に興味を持っているのは、上記の手法が失敗する理由です。