2

正直なところ、私はこれをどのように説明すればよいかわかりません:

「これが IE8 では機能しないのに、Firefox または Chrome では問題なく機能するのはなぜですか」: http://jsfiddle.net/iddqd/xEfSK/

しかし、試してみます。つまり、アニメーションしていないときは問題なく見えますが、2 つの問題があるようです。1 つは、フェード時に IE がアンチエイリアシングを使用しないことです。もう 1 つは、テキストが何らかの形で半透明の div を通過することです。

コールバック関数でフィルターを削除する、テキストを別の div に配置する、whiteBackground をボックスの外に配置するなど、さまざまなハックを試しました。すべての組み合わせの中から、有効な解決策を見つけることができませんでした。

ヒントはありますか?

4

1 に答える 1

0

簡潔で簡単な答えは、IE8 以下は、カラーリングopacityなどの透過性エミュレーターをサポートしていないということです。rgba()これをエミュレートするには、(現在は廃止された)filter構文を使用して DirectX レンダリングを内部的に呼び出します。これは jQuery が「可能な限り最良の意図した結果」を得るために内部で行おうとしていることですが、そうです、DirectX フィルターは画像で動作するため、見苦しくなります。 2 つの問題:

  • ClearType を適用できないため、アンチエイリアスがぴくぴく動く
  • DirectX は一番上にレンダリングしようとするため、トランジション中に個別のレイヤーが常に正しい順序で表示されないなど、スタックの問題が発生する可能性があります。

残念ながら、フィルターハックでは通常の両方の問題について説明しています。このページでいくつかの可能な解決策を見つけることができますが、一般的には、これが IE<=8 では適切に機能しないこと、および/またはこれらのブラウザーでフェードをスキップするために適切に機能を低下させることを受け入れるだけです。

于 2013-05-20T23:54:18.960 に答える