如果让父元素确定其自身的高度,它将忽略绝对定位的子元素。你的
configContainer
有两个子对象,两个子对象都处于绝对位置,因此其高度计算为
0px
.
绝对的
position - CSS: Cascading Style Sheets | MDN
解决方案1:手动设置父对象的高度。
最简单,但可能是最不可扩展的。这里最明显的警告是,如果事情发生变化,你可能会回到同样的情况。
#mainContainer {
margin: 0 auto;
width: 1000px;
height: auto;
}
#innerContainer {
width: 100%;
height: 100%;
}
#configContainer {
position: relative;
width: 100%;
height: 100px;
}
.optionsArea-1 {
height: 100px;
}
.optionsArea-2 {
height: 100px;
}
.layer-1 {
z-index: 20;
position: absolute;
top: 0;
left: 0;
}
.layer-2 {
z-index: 10;
position: absolute;
top: 0;
left: 0;
}
<body>
<div id="mainContainer">
<div id="innerContainer">
<div id="configContainer">
<div class="layer-1">
<img src="http://via.placeholder.com/100x100" alt="">
</div>
<div class="layer-2">
<img src="http://via.placeholder.com/100x100" alt="">
</div>
</div>
<div class="optionsArea-1">
<div class="optionsMenu-1">
<ul>
<li><a href="#">Option 1</a></li>
<li><a href="#">Option 2</a></li>
<li><a href="#">Option 3</a></li>
</ul>
</div>
</div>
</div>
</div>
</body>
解决方案2:在图像编辑器中组合图像。
如果您能够将图像组合成一个图像,而不是通过编程将其分层,则可以避免
position: absolute;
总的来说,你的父母会计算出预期的高度。
#mainContainer {
margin: 0 auto;
width: 1000px;
height: auto;
}
#innerContainer {
width: 100%;
height: 100%;
}
#configContainer {
position: relative;
width: 100%;
}
.optionsArea-1 {
height: 100px;
}
.optionsArea-2 {
height: 100px;
}
.layer-1 {
z-index: 20;
position: absolute;
top: 0;
left: 0;
}
.layer-2 {
z-index: 10;
position: absolute;
top: 0;
left: 0;
}
<body>
<div id="mainContainer">
<div id="innerContainer">
<div id="configContainer">
<img src="http://via.placeholder.com/100x100" alt="">
</div>
<div class="optionsArea-1">
<div class="optionsMenu-1">
<ul>
<li><a href="#">Option 1</a></li>
<li><a href="#">Option 2</a></li>
<li><a href="#">Option 3</a></li>
</ul>
</div>
</div>
</div>
</div>
</body>