css width % 工作不正常;比必要的时间更长

css width % working incorrectly; longer than necessary

我有一组图像,我想将它们一张一张地堆叠起来。我正在使用 bootstrap,并且我在超大屏幕的中心放置了一个父 div。这个 div 包含一个图像,绝对 divs 进一步包含图像。但是,当我将 width:100% 应用于子 divs 时,它们最终变得更长/

这个js-fiddle是代码片段:https://jsfiddle.net/yhL6tndn/

我相信 % 实际上是相对于父容器(示例中的 #major)测量的。所以我的 #semimajor 的宽度和高度应该相等,因为 #major 的宽度和高度相等。

在检查实际尺寸时,我发现

  1. #major 父级的整个宽度用于计算 #semimajor
  2. 的宽度

  1. #major 的宽度是用边距计算的。我的 box-sizing 属性设置为 border-box

应该发生的是 #semimajor 应该测量 150px x 150px。不过我无法发现代码中的错误。

编辑 1:#major 上的 position: relative 删除了问题,但我仍然不明白为什么一定是这样。

当您使用 position: absolute 时,它来自文档的正常流并且相对于 body 定位并且来自 #major.

请注意,当您添加 position: relative 时,它绝对定位到最近的相对定位的父容器,即 #major,因此子 div 不会超过 #major