IEでフェードが効かない(フェードのアニメーション無しで切り替わる)現象に遭遇したので解決法のメモ。
サンプルコード
HTML
<div id="fade"><div><img src="image.jpg" /></div></div>
CSS
#fade { position: absolute; } #fade img { position: absolute; }
JavaScript
$(function() { $('#fade div').hide(); $(document).on('click', '#button', function() { $('#fade div').fadeIn(); }); });
jQueryでフェードをかけるようにしていますが、フェードさせる要素にopacityを直接指定しても
効いていませんでした。
解決方法
いろいろ試してみたところ、opacityを指定する子要素(img)を絶対配置にしていることが原因みたいでした。
ただ今回は、imgを絶対配置にする必要があったので、下記のようにフェードする要素に
position: relative;を指定して対応しました。
CSS
#fade { position: absolute; } #fade div { position: relative; } #fade img { position: absolute; }
IE8の対応
上記だとIE8でまだopacityが効いていなかったので、imgにfilter: inherit;を指定することで対応できました。
CSS
#fade { position: absolute; } #fade div { position: relative; } #fade img { position: absolute; filter: inherit; }
コメントが承認されるまで時間がかかります。