如何让 2 个重叠元素填充它们的父元素

How to have 2 overlapping elements fill their parent

我需要 2 个元素(在演示中标记为 #a 和 #b)来完全填充它们的父元素。我需要元素 #a 填充它的父元素(这很简单,我只是将 flex 设置为 1),我需要元素 #b 位于 #a 之上并且具有与 #a 完全相同的大小。如何使#b 具有相同的大小?如果我将 width/height 设置为 100% #b 将溢出。

body {
  margin: 0;
  display: flex;
  width: 100vw;
  height: 100vh;
}

nav {
  background-color: silver;
}

main {
  flex: 1;
  border: 5px solid green;
  display: flex;
}

#a {
  border: 1px solid aqua;
  flex: 1;
}
#b {
  position: absolute;
  border: 1px dashed blue;
  flex: 1;
}
<nav>sidebar of variable width</nav>
<main>
  <div id="a">aaa</div>
  <div id="b">bbb</div>
</main>

如果您将父级(主)设置为 position: relative 而 #b 是 position: absolute 那么您应该能够相对于 main 调整其大小(在本例中为 100% 宽度和高度)并将其定位到顶部和左侧 0.

body {
  margin: 0;
  display: flex;
  width: 100vw;
  height: 100vh;
}

nav {
  background-color: silver;
}

main {
  flex: 1;
  border: 5px solid green;
  display: flex;
  position: relative;
}

#a {
  border: 1px solid aqua;
  flex: 1;
}

#b {
  position: absolute;
  border: 1px dashed blue;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
<nav>sidebar of variable width</nav>
<main>
  <div id="a">aaa</div>
  <div id="b">bbb</div>
</main>