5

要素に が指定されるopacityと、要素のすべての静的子および相対子が部分的な透明度でレンダリングされます。ただし、position: absolute(またはposition: fixed) を持つ要素はこれを継承せず、別段の指示がない限り完全な不透明度でレンダリングされます。

ここで、割り当てを、割り当てを実行する関数の呼び出しに置き換えることができます。次に、style.opacityすべての子をループし、計算されたスタイルを取得し、位置プロパティが独自の追加を保証するかどうかを確認しstyle.opacityます...しかし、それは少し核心です.

適切な要素に追加できることも知っていopacity: inheritますが、これはそれらがフェード要素の直接の子である場合にのみ機能します - それらが子孫である場合はどうなりますか?

要素に正しい透明度を強制的に継承させる方法があるかどうか知りたいです。

filter:alpha(...)補足:興味深いことに、IE は、私が使用したときに思いどおりに動作します。

4

2 に答える 2

8

結局のところ、答えは単に「絶対要素に透明度の影響を受ける相対コンテナがあることを確認する」というものでした。忘れました。

于 2012-07-28T13:39:59.230 に答える
0

コメントによると、それはIEのみの問題のようです。また、回避する必要のあるバグのようです。ただし、配置された要素のみに設定します。

opacity: inherit; /* IE9 */
filter: inherit; /* IE8 */

... IE8-9では、をabsolute継承する要素の子に伝播しますが、それらの子自体が設定されていないと仮定します(ただし、IE8の場合でも、IE9でのその後の実験では、要素の孫はそれ自体が非表示のままであるように見えました。だった)。他の配置された子供は同じものを必要とします。IE7(気になる場合)は夕方に失敗しました。opacitypositionposition: relativeabsoluteposition: absoluteinheritfilter

IE9は、をposition: relative設定#containerせずにinherit設定することで解決できます#containedが、それは子供の位置に深刻な影響を与える可能性がありますabsolute(ただし、子供ではありませんfixed)。

内に配置された多くの要素を処理している場合は、このコードをIE9以下に条件付きでフィード することをお勧めします(IE10はテストしていません)。

#container * {
    opacity: 0;
    filter: alpha(opacity=0);    
}
于 2012-07-23T17:42:00.613 に答える