2009-03-26 7 views
5

私はマップを使ってアプリケーションを開発しています。そこにはdivがあり、その中にはいくつかの要素があります。この地図をクリックすると、小さなウィンドウに情報が表示されます。窓は、場合によってはコーナーの区画に覆われています。z-indexは他の方法がない場合、要素を別の要素の上に配置する唯一の方法ですか?

私は逆の効果を望んでいます(ウィンドウがdivをカバーしています)。私はこれが単にz-indexの問題であると考えましたが、私はそれを働かせることができません。これはIE7であり、ちょっと読んでいると、Z-indexは、配置されている要素の内部になければ機能しません。

要素が正しく配置されているように見えますが、Z-インデックスが正しく動作するようになっていますが、運が少ししかありません。私はFirebugを使ってスタイリングを追加して遊んだことがあるが、何かを変えることに何の賭けもしていない。ウィンドウは実際に絶対に配置された2つのdivと、その内部に相対的な1つのdivです。

ここで問題になる可能性のある唯一のものは何ですか、それとも私にはわからないことがありますか?

私が望む効果を達成する他の方法はありますか? jqueryや何かを使ってdivを隠すことはできません。その一部はマップ上で開いているウィンドウの後ろから表示する必要があるからです。

+0

htmlやcssの例を提供して、一部のユーザーが問題をよりよく診断できるようにすると、より役に立ちます。 – TheTXI

答えて

8

あなたは、IEのすべての位置のdivは新しいスタックコンテキストを作成し、他の人の上に来るようにdiferentスタッキングコンテキストからのzインデックスを防ぐことができます

http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html

スタッキングコンテキストのバグをヒットしています。

解決策は、ウィンドウを覆っている他のdivのすべての親のZ-インデックスよりも、ツリーの上に(たとえばボディに)、z-インデックス値よりも上にしたいウィンドウを持つことです。ここでの問題を理解するために

広範な情報: http://richa.avasthi.name/blogs/tepumpkin/2008/01/11/ie7-lessons-learned/

+0

毎日新しいことを学んでください。ありがとう。 – Carter

1

ポジショニングと負のマージンは、私の知っていることをオーバーラップする要素を取得する唯一の方法です。 z-indexは、要素をレイヤーする方法をブラウザに明示的に伝えるために使用されます。

あなたの問題に関しては、IEでは、重複しているコンテナ要素や要素が正しく動作するためにposition:relative;またはposition:absolute;が必要です。誰かがポジショニングを言うと、通常、CSSにpositionプロパティが設定されていることを意味しています。また、z-indexを使って作業する場合、重なっている要素が互いに同じレベルにあることを確認してください。これは他の回答で示唆した通り、position:relativeposition:absoluteはIEで「スタッキングコンテキストを」リセット

0

役立ちます

希望。

0

レイジーな回答が必要な場合は、javascriptを使用して地図をクリックしたときにdivを非表示にし、地図を閉じるときに表示することができます。

これは、ページ上の任意の選択項目で行う必要があります。なぜなら、それらはz-indexで機能しないからです。

1

簡単に言えば、あなたのHTMLファイル内の要素の順序は、スタック順序を決定します。要素を別の要素よりも上に置くには、要素がHTMLの後ろにあることを確認します。

同じ要素に含まれるすべての要素に対してのみ積み重ね順序を入れ替えることができます。たとえば、2つのdivがあり、両方に3つの画像がある場合、2つ目のdivの画像を最初のdivの画像の下に移動させることはできません。

複雑な積み荷注文が必要な場合は、先にHTMLを計画する必要があります。

関連する問題