絶対的だが親に相対的な位置


457

別のdiv内に2つのdivがあり、1つの子divを親divの右上に配置し、もう1つの子divをcssを使用して親divの下部に配置したいと思います。つまり、2つの子divで絶対配置を使用したいが、ページではなく親divに対して相対的に配置したい。これどうやってするの?

サンプルhtml:

<div id="father">
   <div id="son1"></div>
   <div id="son2"></div>
</div>

son1を父親の右上隅に配置したいのですが、son2を下のどこに配置しますか?左下、右、または中央?
j08691

1
この場合、親要素に対して相対的な位置、および子要素に対して絶対的な位置を設定する必要があります。最初の子要素には、top:0とright:0を配置して、親要素の右上に配置する必要があります。2番目の子には、bottom:0を配置して、親要素の下部に配置する必要があります。 相対位置と絶対位置を詳細に説明する素晴らしい記事がここkolosek.com/css-position-relative-vs-position-absoluteにあります。
Nesha Zoric

回答:


812
#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 0;
}

#son2 {
   position: absolute;
   bottom: 0;
}

この作品のためposition: absoluteの手段のようなもの「の使用をtoprightbottomleft持っている最も近い祖先との関係の中で自分自身を配置しますposition: absoluteposition: relative。」

私たちが作るので、#father持っているposition: relative、と子供たちが持っているposition: absolute、そして使用topしてbottom子を配置します。


17
なぜ#father { position: relative; }必要なのですか?
joshreesjones 2014

4
彼の内側にいる人のために「ポジションルール」を変更する必要があります。
BlaShadow 14

36
@ mathguy54仕様によると、絶対配置された要素は最初に配置された親に相対的に配置されますstatic。これは、位置の値を持たない親を意味します。
Alex W

そのようなシナリオについてはどうですか:父は相対的で、身長は100%です。息子と息子2をどのように配置するか、父親の身長のそれぞれ20%と70%としましょう。
ロッシッテン2015年


27
div#father {
    position: relative;
}
div#son1 {
    position: absolute;
    /* put your coords here */
}
div#son2 {
    position: absolute;
    /* put your coords here */
}

1
親と子のサイズを変更する必要がある場合はどうなりますか?
FrenkyB

10

誰かが子divを親の直下に配置したい場合

#father {
   position: relative;
}

#son1 {
   position: absolute;
   top: 100%;
}

作業デモCodepen


6

親にポジションを与えない場合、デフォルトでがかかりますstatic。その違いを理解したい場合は、この例を参照してください

例1 ::

http://jsfiddle.net/Cr9KB/1/

   #mainall
{

    background-color:red;
    height:150px;
    overflow:scroll
}

ここでは、親クラスには位置がないため、要素は本文に従って配置されます。

例2 ::

http://jsfiddle.net/Cr9KB/2/

#mainall
{
    position:relative;
    background-color:red;
    height:150px;
    overflow:scroll
}

この例では、親には相対位置があるため、要素は相対親の内部に絶対的に配置されます。


また、#mainall {height:150px}がない場合はどうなりますか?つまり、メインオールが動的な高さを持っているとしたら?
AlbertCatalà2015

次に、フローティング要素は、ページ(およびcss)が読み込まれたときに親要素が持っていた位置に相対的になります。ページのロード後にそれを更新したい場合は、javascriptを使用してください-clientXとclientYが最初の開始点として適切です
Abraham Brookes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.