2016-11-07 2 views
1

私は2つの要素を持っています.1つは、私のヘッダーの大部分を定義する相対的な配置を持ち、もう1つは、その上に浮かべたいものです。相対配置要素が浮動要素の上に表示されるのはなぜですか?

<div id=floater style="float:right"> 
Floater! 
</div> 
<div id=header style="width: 100%; position: relative; background-color: lightgreen"> 
This is the header 
</div> 

this fiddleに示されているように、フローティングコンポーネントは見えません。しかし、position: relativeを削除すると、浮動小数点の要素が右上にポップアップします。 Z-指数を押し下げても何の関心もない。

ヘッダーコンポーネントは「マイナー」ではありません。 React-Bootstrapを介して継承されます。私はオーバーライドすることができますが、今はフロートと相対的な位置付けの相互作用を理解しようとしています。

+0

この動作は私にとってはかなり正常です。 'z-index'は静的に配置された要素には何の影響も与えないことに留意してください。あなたの目標は何ですか? – MaxArt

+0

振る舞いは正しい位置です:relativeはフロント要素https://jsfiddle.net/eax6wdpx/3/を表示しますが、BFCをクリアまたは変更する必要もありますhttps://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context要素を浮動小数点から離したい場合に使用します。 - これを行うには2つの方法があります:https://jsfiddle.net/eax6wdpx/4/ https://jsfiddle.net/eax6wdpx/5/ –

+0

私は何をやっていたのでしょうか?これは、おそらくこのアプリケーションにとって十分です。 私は、フロートされていない要素であっても、相対位置1の下に表示されることを発見しました。これは手掛かりと思われます。相対配置要素は上に行くようです。 –

答えて

1

positionプロパティが設定されていない要素は、デフォルトで「position:static」に設定され、z-indexなどのすべての位置指定プロパティは無視されます。相対位置をヘッダ要素に設定することで、z-indexプロパティを持たないfloater要素の前にその要素を持っていくことで、z-indexの位置決めプロパティを導入しました。

静的浮動小数点要素ではz-インデックスは無視されるため、その要素に位置情報(絶対、相対、または固定)を与えなければならないので、z-インデックスも持つことができます。

例:「position:relative;」うまくいくでしょう。 floater要素のpositionプロパティを設定したら、ヘッダ要素より上位のz-index値を追加する必要があります。 z-indexはデフォルトに設定されているので、この場合z-index:1はより高い値になります。

例:

<div id=floater style="float:right; position: relative; z-index: 1;"> 
    Floater! 
</div> 
<div id=header style="width: 100%; position: relative; background-color: lightgreen"> 
    This is the header 
</div> 
+0

私はフロートしてポジションを使うことができますが、アイ・オープナーのようなものですが、私はそれを手に入れます。ありがとう。 –

+0

しかし、それは必ずしも良い習慣ではありません。相対的な位置とは、ページ上のどこにあっても、相対的な位置を意味します。この場合、フロートをゴミ箱に置き、代わりに相対的な位置付けだけを使用することもできます。 –

1

要素が配置されている場合、他の要素と重なることがあります。 Zインデックスを指定せずに2つの配置された要素が重なっている場合、HTMLコードの最後に配置された要素が上に表示されます。

0

これはインフローpainting order

の機能、非配置され、ブロックレベル要素は、ステップ4

浮上項目に描かれていますフローティング要素は静的divの「上」に塗りつぶされ、表示されます。

しかし、 'z-index:auto'または 'z-index:0'の位置付けされた子孫がステップ8でペイントされます。したがって、position:relativeをdivに追加すると、float要素の "それを隠している。

関連する問題