Saya memiliki 3 div
elemen.
Pertama div
lebih besar (bungkus) dan memilikiposition:relative;
div
Posisi kedua diposisikan absolut ke div
posisi relatif pertama (dan termasuk dalam posisi pertama div
)
Posisi ketiga div
ada di urutan kedua div
dan juga memiliki posisi absolut.
<div id="1st">
<div id="2nd">
<div id="3rd"></div>
</div>
</div>
Mengapa div
posisi ke-3 mutlak dari ke-2 div
(yang juga merupakan posisi mutlak ke-1 div
) dan bukan ke-1 div
yang memiliki posisi relatif?
Karena posisi ke-3 div
adalah posisi absolut dan posisi ke-2 mutlak div
.
html
css
css-position
pufos
sumber
sumber
Jawaban:
Karena
position: absolute
mengatur ulang posisi relatif untuk anak-anak sepertiposition: relative
halnya.Tidak ada jalan lain - jika Anda ingin yang ketiga
div
diposisikan secara absolut secara relatif terhadap yang pertama, Anda harus menjadikannya anak dari yang pertama.sumber
0px / 0px
posisi untuk anak-anak mendapat ulang olehposition: absolute
position:relative
artinya elemen akan diposisikan (menggunakan atas, kanan, kiri bawah) secara relatif dari posisinya saat ini.position: absolute
berarti itu akan diposisikan relatif terhadap jendela browser atau induk pertama denganposition: absolute
atauposition: relative
.Keduanya
position:relative
danposition:absolute
menetapkan elemen yang mengandung sebagai assesor posisi.Jika Anda membutuhkan div 3 untuk diposisikan berdasarkan div 1, jadikan itu turunan langsung dari div 1.
Perhatikan bahwa
position: relative
berarti elemen diposisikan relatif terhadap posisi aslinya danposition: absolute
berarti elemen diposisikan relatif terhadap yang pertamaposition:relative
atauposition:absolute
leluhurnya .sumber
Posisi statis: posisi statis adalah cara default sebuah elemen akan muncul dalam aliran normal file HTML Anda jika tidak ada posisi yang ditentukan sama sekali.
Penting:
top
,right
,bottom
danleft
sifat TIDAK MEMILIKI PENGARUH A statis DIPOSISIKAN ELEMEN.Posisi relatif: memposisikan elemen dengan nilai relatif membuat elemen (dan ruang yang ditempati) dalam aliran normal file HTML Anda.
Anda kemudian dapat memindahkan elemen dengan beberapa jumlah menggunakan properti
left
,right
,top
danbottom
. Namun, hal ini dapat menyebabkan elemen tersebut tumpang tindih dengan elemen lain yang ada di halaman — yang mungkin merupakan efek yang Anda inginkan atau tidak.Elemen yang diposisikan secara relatif dapat berpindah dari tempatnya, tetapi ruang yang ditempati tetap ada.
Posisi absolut: menerapkan nilai posisi absolut ke suatu elemen akan menghilangkannya dari aliran normal. Saat Anda memindahkan elemen posisi absolut, titik referensinya adalah bagian atas / kiri dari elemen penampung terdekat yang memiliki posisi yang dinyatakan selain statis — juga disebut konteks pemosisian terdekatnya. Jadi, jika tidak ada elemen yang mengandung dengan posisi selain statis, maka itu akan diposisikan dari sudut kiri atas elemen tubuh.
Dalam kasus Anda, wadah berisi ketiga terdekat adalah ke-2.
sumber
Namun jawaban klarifikasi lainnya.
Skenario Anda saat ini adalah ini:
#my-parent {position: absolute} #my-parent .my_child {position: absolute}
Dan Anda agak berjuang dengan itu.
Jika Anda dapat mengubah HTML, cukup lakukan ini:
#my-parent {position: absolute} #my-parent .my-wrapper {position: relative} /* Since you've added the wrapper in HTML */ #my-parent .my-wrapper .my-child {position: absolute} /* Now you can play with it */
sumber
Alasan mengapa
div
elemen ke-3 benar-benar diposisikan kediv
elemen ke-2 adalah karena seperti yang dijelaskan spesifikasi CSS di sini , adalah karena elemen "induk" (lebih baik dikatakan: mengandung blok) dari elemen yang diposisikan secara absolut belum tentu elemen induk langsungnya, tetapi lebih tepatnya elemen yang diposisikan langsung yaitu setiap elemen yang posisinya diatur ke apa pun kecualistatic
sebagai contohposition: relative/absolute/fixed/sticky;
Oleh karena itu, jika memungkinkan dalam kode Anda, jika Anda ingin
div
elemen ke-3 diposisikan secara mutlak sehubungan dengan yang pertama,div
Anda harus membuatdiv
elemen ke-2 Anda sebagaiposition: static;
nilai defaultnya (atau cukup hapusposition: ...
deklarasi apa pun dalam set aturandiv
elemen ke-2 Anda ) .Hal di atas akan membuat blok pertama
div
yang berisi blok ketiga benar-benar diposisikandiv
, mengabaikan blok ke -2div
untuk tujuan pemosisian ini.Semoga membantu.
sumber
Jika ada yang masih mencari jawaban untuk ini.
Saya bisa mencapai hasil ini dengan menambahkan
clear: both;
gaya ke div yang benar-benar diposisikan pertama yang mengatur ulang anak dan mengizinkannya menggunakanabsolute
posisinya sendiri .sumber