1

フェードアウトしてフェードインしたい LI があります。リスト項目内にテキストがあります。このテキストは LI 内に完全に配置されます。

問題は、IE8 (IE6 と 7 は問題ないようです) では、テキスト以外のすべてをフェードさせることができるということです。

http://jsbin.com/esamu/13

テキスト要素 (この場合は P) の絶対位置を削除すると、IE8 はテキストを適切にフェードできます。

http://jsbin.com/esamu/14

これがなぜなのか知っている人はいますか?誰でも修正を知っていますか?

アップデート:

テキストが配置されている場合、これは IE8 の一般的な問題のようです。したがって、厳密には絶対ではありません。これは、cleartype のフェード バグによるものだと思います。

4

4 に答える 4

7

テキストを配置することにより、IE8 は不透明度を継承しません。実際、これは cleartype のバグと同じ問題ではないと思います。

動作するスクリプトでスクリプトを更新しました: http://jsbin.com/esamu/19

私がしたのは、 $('li') を $('li,p') に変更しただけで、位置付けられた要素を明示的に選択しました。

于 2010-03-24T04:54:05.533 に答える
2

arnie と prodigit は両方とも、有用な代替手段を提供しました。ありがとう!

最終的に、これは私たちが思いついたかなりばかげた解決策です。

私たちの場合、テキストが上に重ねられた (配置された) 画像を含む一連の LI があります。LI 全体をフェードアウトし、完了したら次の LI をフェードインします。

問題は、テキストが IE8 (およびおそらく 7) で適切にフェードアウト/インしないことでした。修正は、各 LI をフェードアウトする代わりに、たまたま背景と一致する上部の画像をフェードインすることです (私はこれを「IE フェード マスク」と呼んでいます)。その画像が完全にフェード インしたら、背景の LI を交換し、前面の画像をフェード アウトします。

これにより、まったく同じ外観が得られるだけでなく、IE でタイプが滑らかなままであるというボーナスが得られます。

これは、LI を別のものにフェードするためにも使用できると思います (1 つのフェードアウトと同時に他のフェードインを行う)。LI ごとに「IE フェード マスク」を複製するだけで済みます。

于 2010-03-24T15:13:36.757 に答える
1

ie8 (ie7、6 は問題ありませんでした) の絶対配置テキストで同じ問題が発生し、要素のフェードインに高い z-index を割り当て、フェードアウトに低い z-index を割り当てることで解決しました。

$('#fadeoutdiv').css({zIndex:7}).fadeOut(2000); $('#fadeindiv').css({zIndex:6}).fadeOut(2000);

このソリューションについては、Al Flemming の功績によるものです。

于 2010-11-10T23:19:25.760 に答える