通过堆叠 html 个元素生成一个简单的十字

Generating a simple cross by stacking html elements

我正在尝试在父元素 (box) 中生成一个简单的交叉(使用 verticalhorizontal 组件),但未能成功。

.box {
  width: 50vmin;
  height: 50vmin;
  background-color: blue;
  margin: 0 auto;
}

.vertical {
  position: absolute;
  width: 10%;
  height: 80%;
  top: calc((100% - 80%) / 2);
  left: calc((100% - 10%) / 2);
  background-color: black;
}

.horizontal {
  position: absolute;
  width: 80%;
  height: 10%;
  top: calc((100% - 10%) / 2);
  left: calc((100% - 80%) / 2);
  background-color: black;
}
<div class="box">
  <div class="vertical"></div>
  <div class="horizontal"></div>
</div>
  

我预期的输出是一个位于蓝色框内的黑色十字。谁能告诉我哪里出错了?

感谢您的帮助!

使父元素 .box 相对于 .vertical.horizontal 相对于 .box 而不是 window(或其他具有相对元素的父元素) ).

试试这个:

.box {
 width: 50vmin;
 height: 50vmin;
 background-color: blue;
 margin: 0 auto;
 position: relative; /* CHANGED HERE */
}

.box {
  width: 50vmin;
  height: 50vmin;
  background-color: blue;
  margin: 0 auto;
  position: relative;
}

.vertical {
  position: absolute;
  width: 10%;
  height: 80%;
  top: calc((100% - 80%) / 2);
  left: calc((100% - 10%) / 2);
  background-color: black;
}

.horizontal {
  position: absolute;
  width: 80%;
  height: 10%;
  top: calc((100% - 10%) / 2);
  left: calc((100% - 80%) / 2);
  background-color: black;
}
<div class="box">
  <div class="vertical"></div>
  <div class="horizontal"></div>
</div>