Menumpuk DIV di atas satu sama lain?


116

Apakah mungkin menumpuk beberapa DIV seperti:

<div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>

Jadi semua DIV dalam itu memiliki posisi X dan Y yang sama? Secara default mereka semua pergi di bawah satu sama lain meningkatkan posisi Y dengan ketinggian DIV sebelumnya yang terakhir.

Saya merasa semacam float atau display atau trik lain bisa menggigit?

EDIT: DIV induk memiliki posisi relatif, jadi, menggunakan absolut posisi tampaknya tidak berfungsi.


Untuk memperjelas jawaban saya, Anda benar-benar ingin memposisikan div bagian dalam.
Matt

Jawaban:


168

Posisikan div luar sesuka Anda, lalu posisikan div dalam menggunakan absolute. Mereka semua akan bertumpuk.

.inner {
  position: absolute;
}
<div class="outer">
   <div class="inner">1</div>
   <div class="inner">2</div>
   <div class="inner">3</div>
   <div class="inner">4</div>
</div>


1
Sepertinya tidak berhasil. Mungkin saya seharusnya menyebutkan bahwa saya memiliki skenario ini: <div style = "position: absolute ..."> <div style = "position: relative ..."> <div> tumpukan ini </div> <div> tumpukan ini </div> <div> tumpukan ini </div> <div> tumpukan ini </div> </div> </div>
Menara

2
Anda benar-benar ingin memposisikan div yang memiliki "stack this" di dalamnya. Itu berhasil - Saya mencobanya sebelum memposting asli saya. Jika Anda tidak menempatkan pemilih kelas pada div Anda, sesuaikan metode pemilihan div dalam jawaban Eric untuk memilih div tumpukan.
Matt

1
Tidak berhasil untuk saya juga. Terlalu banyak hal tak dikenal yang tersisa untuk pemirsa.
yan bellavance

Saya mendapatkan div untuk menumpuk menggunakan posisi: relatif dan menentukan ketinggian
yan bellavance

itu mungkin ada hubungannya dengan tampilan prop?
yan bellavance

50

Untuk menambah jawaban Dave:

div { position: relative; }
div div { position: absolute; top: 0; left: 0; }

Sepertinya tidak berhasil. Mungkin saya seharusnya menyebutkan bahwa saya memiliki skenario ini: <div style = "position: absolute ..."> <div style = "position: relative ..."> <div> tumpukan ini </div> <div> tumpukan ini </div> <div> tumpukan ini </div> <div> tumpukan ini </div> </div> </div>
Menara

Saya pikir dalam hal ini Anda ingin menyetel "top: 0; left: 0;" pada div Anda yang memiliki "position: relative". Pasti menguji IE6 itu, meskipun karena saya tidak dapat mengatakan dengan pasti bahwa itu akan berhasil.
Eric Wendelin

10

Jika Anda bermaksud meletakkan satu di atas yang lain, satu di atas (posisi X, Y yang sama, tetapi posisi Z yang berbeda), coba gunakan z-indexatribut CSS. Ini harus bekerja (belum teruji)

<div>
    <div style='z-index: 1'>1</div>
    <div style='z-index: 2'>2</div>
    <div style='z-index: 3'>3</div>
    <div style='z-index: 4'>4</div>
</div>

Ini akan menunjukkan 4 di atas 3, 3 di atas 2, dan seterusnya. Semakin tinggi indeks-z, semakin tinggi posisi elemen pada sumbu-z. Saya harap ini membantu Anda :)



5

Saya memposisikan div sedikit diimbangi, sehingga Anda dapat melihatnya bekerja.
HTML

<div class="outer">
  <div class="bot">BOT</div>
  <div class="top">TOP</div>
</div>

CSS

.outer {
  position: relative;
  margin-top: 20px;
}

.top {
  position: absolute;
  margin-top: -10px;
  background-color: green;
}

.bot {
  position: absolute;
  background-color: yellow;
}

https://codepen.io/anon/pen/EXxKzP


4

Anda sekarang dapat menggunakan CSS Grid untuk memperbaikinya.

<div class="outer">
  <div class="top"> </div>
  <div class="below"> </div>
</div>

Dan css untuk ini:

.outer {
  display: grid;
  grid-template: 1fr / 1fr;
  place-items: center;
}
.outer > * {
  grid-column: 1 / 1;
  grid-row: 1 / 1;
}
.outer .below {
  z-index: 2;
}
.outer .top {
  z-index: 1;
}

0

Saya tahu bahwa posting ini agak tua tetapi saya memiliki masalah yang sama dan mencoba memperbaikinya beberapa jam. Akhirnya saya menemukan solusinya:

jika kita memiliki 2 kotak diposisikan absolue

<div style='left: 100px; top: 100px; position: absolute; width: 200px; height: 200px;'></div>
<div style='left: 100px; top: 100px; position: absolute; width: 200px; height: 200px;'></div>

kami berharap akan ada satu kotak di layar. Untuk melakukan itu kita harus mengatur margin-bottom sama dengan -height, jadi lakukan seperti ini:

<div style='left: 100px; top: 100px; position: absolute; width: 200px; height: 200px; margin-bottom: -200px;'></div>
<div style='left: 100px; top: 100px; position: absolute; width: 200px; height: 200px; margin-bottom: -200px;'></div>

bekerja dengan baik untuk saya.


0

Saya memiliki persyaratan yang sama yang telah saya coba di bawah biola.

#container1 {
background-color:red;
position:absolute;
left:0;
top:0;
height:230px;
width:300px;
z-index:2;
}
#container2 {
background-color:blue;
position:absolute;
left:0;
top:0;
height:300px;
width:300px;
z-index:1;
}

#container {
position : relative;
height:350px;
width:350px;
background-color:yellow;
}

https://plnkr.co/edit/XnlneRFlvo1pB92UXCC6?p=preview

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.