Укладывать DIV друг на друга? - PullRequest
97 голосов
/ 15 декабря 2009

Можно ли составить несколько DIV, например:

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

Так что все эти внутренние DIV имеют одинаковые позиции X и Y? По умолчанию все они идут ниже друг друга, увеличивая положение Y на высоту последнего предыдущего DIV.

У меня есть ощущение, что какой-то трюк или дисплей или другой трюк может укусить?

EDIT: родительский DIV имеет относительную позицию, поэтому использование абсолютной позиции, похоже, не работает.

Ответы [ 7 ]

141 голосов
/ 15 декабря 2009

Позиционируйте внешний div как хотите, затем позиционируйте внутренние div, используя абсолют. Они все будут складываться.

.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>
46 голосов
/ 15 декабря 2009

Чтобы добавить к ответу Дейва:

div { position: relative; }
div div { position: absolute; top: 0; left: 0; }
5 голосов
/ 02 июня 2017

Я слегка сместил элементы div, чтобы вы могли видеть их на работе.
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

5 голосов
/ 15 декабря 2009

Если вы имеете в виду буквальное размещение одного поверх другого, одного сверху (те же позиции X, Y, но разные Z), попробуйте использовать атрибут z-index CSS. Это должно работать (не проверено)

<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>

Это должно показать 4 сверху 3, 3 сверху 2 и так далее. Чем выше z-индекс, тем выше элемент расположен на оси z. Я надеюсь, что это помогло вам:)

4 голосов
/ 15 декабря 2009

style="position:absolute"

0 голосов
/ 28 марта 2017

У меня было то же требование, которое я испробовал ниже.

#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

0 голосов
/ 13 июня 2013

Я знаю, что этот пост немного старый, но у меня была та же проблема, и я пытался ее исправить несколько часов. Наконец я нашел решение:

если у нас есть 2 поля, расположенные в абсолюте

<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>

мы ожидаем, что на экране будет одна коробка. Для этого мы должны установить margin-bottom равным -height, делая так:

<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>

у меня отлично работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...