最初は非表示になっている div 内の特定の要素で単純な fadeIn() を呼び出しています。
JavaScript:
$("#enclosingdiv").css({visibility: "visible"});
$("#element").fadeIn(1500);
問題は、フェード アニメーションの間、レンダリングによってテキストが太くなったり、別のフォントで表示されたりすることです。アニメーションが完了すると、元のフォント/フォントの太さに戻るため、「グリッチ」または「突然の切り替え」が発生します。この問題は、Chrome と IE 8 の両方で発生しました。また、不透明度を 0 から 100 にアニメーション化する animate(opacity) メソッドの実装中にも発生しました (基本的には、fadeIn() と同じ効果)。
私はかなりの量の調査を行い、多くの解決策を試しました:
- IE のフィルターを無効にしました (問題は IE 固有ではありませんが)。
- アニメーション化されている要素に背景を追加しました。
- -webkit-font-smoothing をアンチエイリアスに設定します (明らかな効果はありません)。
- 元のフォントに似ていない未知のフォントまたは太字のフォントのみを一時停止するfadeTo(0.99)を試しました。
ちなみにWindows XPです。
jsFiddle: http://jsfiddle.net/2Txk7/34/