Ответ 1
Удалить
z-index:0;
из .absolute
.
Я пытаюсь сделать черный div
(относительный) выше второго желтого (абсолютным). Черный div
родитель также имеет абсолютную позицию.
#relative {
position: relative;
width: 40px;
height: 100px;
background: #000;
z-index: 1;
margin-top: 30px;
}
.absolute {
position: absolute;
top: 0; left: 0;
width: 200px;
height: 50px;
background: yellow;
z-index: 0;
}
<div class="absolute">
<div id="relative"></div>
</div>
<div class="absolute" style="top: 54px"></div>
Удалить
z-index:0;
из .absolute
.
Это из-за Stacking Context, установка z-index сделает его применимым и ко всем дочерним элементам.
Вы можете сделать двух <div>
братьев и сестер вместо потомков.
<div class="absolute"></div>
<div id="relative"></div>
Я боролся с этой проблемой и узнал (благодаря этому сообщению), что:
div:first-child {
opacity: .99;
}
.red, .green, .blue {
position: absolute;
width: 100px;
color: white;
line-height: 100px;
text-align: center;
}
.red {
z-index: 1;
top: 20px;
left: 20px;
background: red;
}
.green {
top: 60px;
left: 60px;
background: green;
}
.blue {
top: 100px;
left: 100px;
background: blue;
}
<div>
<span class="red">Red</span>
</div>
<div>
<span class="green">Green</span>
</div>
<div>
<span class="blue">Blue</span>
</div>
Я изо всех сил пытался понять, как поставить div над изображением следующим образом:
Независимо от того, как я настроил z-index в обоих div (обертку изображений) и в секции, которую я получал:
Оказывается, я не настроил фон раздела как background: white;
так что в основном это так:
<div class="img-wrp">
<img src="myimage.svg"/>
</div>
<section>
<other content>
</section>
section{
position: relative;
background: white; /* THIS IS THE IMPORTANT PART NOT TO FORGET */
}
.img-wrp{
position: absolute;
z-index: -1; /* also worked with 0 but just to be sure */
}
Просто добавьте второй div.absolute перед другим .second div:
<div class="absolute" style="top: 54px"></div>
<div class="absolute">
<div id="relative"></div>
</div>
Поскольку два элемента имеют индекс 0.
попробуйте этот код:
.absolute {
position: absolute;
top: 0; left: 0;
width: 200px;
height: 50px;
background: yellow;
}
Вы должны поместить второй div поверх первого, потому что оба имеют индекс z, равный нулю, так что порядок в dom будет определять, что находится сверху. Это также влияет на относительный позиционный div, потому что его z-индекс относится к элементам внутри родительского div.
<div class="absolute" style="top: 54px"></div>
<div class="absolute">
<div id="relative"></div>
</div>
Css остается неизменным.
Как насчет этого?
<div class="relative">
<div class="yellow-div"></div>
<div class="yellow-div"></div>
<div class="absolute"></div>
</div>
.relative{
position:relative;
}
.absolute {
position:absolute;
width: 40px;
height: 100px;
background: #000;
z-index: 1;
top:30px;
left:0px;
}
.yellow-div {
position:relative;
width: 200px;
height: 50px;
background: yellow;
margin-bottom:4px;
z-index:0;
}
используйте относительную div как обертку и пусть желтый div имеет нормальное позиционирование.
Только черный блок должен иметь абсолютное положение.
Я решил свою проблему z-index
, создав обертку для тела z-index:-1
, тело z-index:-2
и другие элементы div z-index:1
.
А потом более поздние div не работали, если у меня не было z-index
200+. Несмотря на то, что у меня был position:relative
на каждом элементе, с телом по умолчанию z-index
это не сработало бы.
Надеюсь, это кому-нибудь поможет.