Posisi absolut tetapi relatif terhadap orangtua

457

Saya memiliki dua div di dalam div lain, dan saya ingin memposisikan satu div anak di kanan atas div induk, dan div anak lainnya ke bagian bawah div induk menggunakan css. Yaitu, saya ingin menggunakan posisi absolut dengan dua div anak, tetapi posisikan mereka relatif terhadap div orang tua daripada halaman. Bagaimana saya bisa melakukan ini?

Contoh html:

<div id="father">
   <div id="son1"></div>
   <div id="son2"></div>
</div>
BlaShadow
sumber
Anda ingin son1 berada di sudut kanan atas ayah tetapi di mana seharusnya son2 berada? Kiri bawah, kanan, atau tengah?
j08691
1
Dalam hal ini, Anda perlu mengatur posisi: relatif terhadap elemen induk, dan posisi: absolut untuk elemen anak-anak. Pada elemen anak pertama, Anda harus meletakkan atas: 0 dan kanan: 0 untuk menempatkannya di kanan atas elemen induk. Pada anak kedua, Anda harus meletakkan bawah: 0 untuk memposisikannya di bagian bawah elemen induk. Ada artikel yang bagus di sini kolosek.com/css-position-relative-vs-position-absolute yang menjelaskan posisi relatif dan absolut secara terperinci.
Nesha Zoric

Jawaban:

812
#father {
   position: relative;
}

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

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

Ini bekerja karena position: absoluteberarti sesuatu seperti "penggunaan top, right, bottom, leftmemposisikan diri dalam hubungannya dengan nenek moyang terdekat yang memiliki position: absoluteatau position: relative."

Jadi kami membuat #fathermemiliki position: relative, dan anak-anak memiliki position: absolute, kemudian menggunakan topdan bottommemposisikan anak-anak.

Domenik
sumber
17
Mengapa #father { position: relative; }diperlukan?
joshreesjones
4
diperlukan untuk mengubah "aturan posisi" bagi mereka yang ada di dalam dirinya.
BlaShadow
36
@ mathguy54 Karena spec mengatakan elemen yang diposisikan benar-benar diposisikan relatif terhadap orang tua yang diposisikan pertama , yang berarti setiap orang tua yang tidak memiliki nilai posisi static.
Alex W
bagaimana dengan skenario seperti itu: AYAH adalah relatif dan tingginya 100% bagaimana memposisikan anak laki-laki dan anak2, katakanlah masing-masing 20% ​​dan 70% tinggi ayah?
Rossitten
27
div#father {
    position: relative;
}
div#son1 {
    position: absolute;
    /* put your coords here */
}
div#son2 {
    position: absolute;
    /* put your coords here */
}
Brian Warshaw
sumber
1
Bagaimana jika Anda perlu mengubah ukuran orang tua dengan anak?
FrenkyB
10

Memetikan seseorang ingin memposisikan div anak langsung di bawah orangtua

#father {
   position: relative;
}

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

Demo demo Codepen

petergus
sumber
6

Jika Anda tidak memberikan posisi apa pun kepada orang tua maka secara default dibutuhkan static. Jika Anda ingin memahami perbedaan itu, lihat contoh ini

Contoh 1::

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

   #mainall
{

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

Di sini kelas induk tidak memiliki posisi sehingga elemen ditempatkan sesuai dengan tubuh.

Contoh 2 ::

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

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

Dalam contoh ini induk memiliki posisi relatif maka elemen diposisikan absolut di dalam induk relatif.

anam
sumber
Dan, bagaimana jika Anda tidak memiliki #mainall {height: 150px} ...? Maksud saya, apakah mainall memiliki tinggi dinamis?
Albert Català
maka elemen apung Anda akan relatif terhadap posisi yang dimiliki elemen induk saat laman (dan css) dimuat. Jika Anda ingin memperbarui itu setelah memuat halaman, gunakan javascript - clientX dan clientY adalah tempat yang baik untuk memulai
Abraham Brookes