2016-06-22 13 views
0

複数のdivを相互に配置する方法を知りたいと思います。div、divのCSS配置

私はposition: absoluteで試しましたが、これにより、コンテナdivの高さを明示的に指定する必要があります。これはやりたくありません。

+0

なぜ「position:absolute」を使用しないという制限がありますか? – Sirko

+0

これを参照してくださいhttp://stackoverflow.com/questions/10426497/position-relative-vs-position-absolute –

+0

あなたはこのようなものを探していますか:https://jsfiddle.net/xs1ka3z4/1/ –

答えて

2

どのように正確に配置したいですか?

divの場合は、デフォルトでposition: staticとなります。 position:absoluteを使用したくない場合は、負のマージンを使用できます。これは推奨される解決策ではありませんが、ハックは間違いなく機能します。必要な場合は、%のマージンを使用することができますが、%のマージン特性は、常に親ブロックWIDTHの割合になります

.d1 { 
 
    background-color: red; 
 
    height: 200px; 
 
    width: 150px; 
 
} 
 

 
.d2 { 
 
    background-color: blue; 
 
    height: 150px; 
 
    width: 100px; 
 
    margin-top: -100px; 
 
}
<div class="d1"></div> 
 
<div class="d2"></div>

注意。だからそれには注意してください。

NB:間違いを修正するための@Oriolへのタンク。私は彼の助言のおかげで私の答えを編集しました。

+0

マージンのパーセンテージは、ウィンドウの幅と異なる可能性のある収容ブロックの幅に合わせる。デフォルトは 'position:relative'ではなく' position:static'です。 – Oriol

+0

両方のことを指摘してくれてありがとう。私は私の説明にショートカットを作った。なぜなら、その違いが、私が言及したことと現実との間に特に関連していなかったからである。しかし、これは不十分で、私はappologize。私の投稿を編集する – Carele

0

あなたが達成しようとしていることはわかりませんが、そのようなものが役に立つと思うシナリオは1つしか想像できません。つまり、複数のdivを切り替えます。その場合は、現在のdiv以外のすべてでdisplay:noneを使用してください。

とにかくchild divはデフォルトで親divと「重複」していますので、兄弟同士を「お互いに」したいと思っていると思います。

これを実行する唯一の方法は、絶対マージンと相対的な配置です(マイナスマージンハックを除く)。

#foo{ 
    background-color:red; 
    height: 50px; 
    width: 50px; 
    position: relative; 
} 
#bar{ 
    background-color:blue; 
    height: 50px; 
    width: 50px; 
    position: absolute; 
} 
#foobar{ 
    background-color: green; 
    height: 50px; 
    width: 50px; 
    position: absolute; 
} 
#raboof{ 
    background-color: yellow; 
    height: 50px; 
    width: 50px; 
} 

<div id="foo"> 
    <div id="bar"></div> 
    <div id="foobar"></div> 
    <div id="raboof"></div> 
</div> 

Jsfiddle:1.あなたはしかし、最後の子は絶対に配置する必要はありません可能性がありますhttps://jsfiddle.net/t81hvsa1/

ことを覚えておいてください

ここで方法です。 2.最後に絶対的に配置された子供は常に上になります。

編集:私はちょうど気づいた、this question's discussionあなたが望むことができるすべての答えがあります。より洗練され、より良いフォーマットになっています。

+0

ここでは、fooの高さが指定されています。私はそれをautoにします。 – kunal

+0

絶対位置または固定位置以外の位置に子供の位置(好きなものは最後の位置)を保持する限り、自動高さにすることもできます。私は[fiddle](https://jsfiddle.net/t81hvsa1/5/)を編集し、子divの背景色をコメントアウトしています。したがって、fooの高さは、絶対的に配置されていないraboofの高さにも及んでいます。 raboofの高さを変更し、fooの高さを自動的に調整します。 –