绝对定位的内部内容在宽度为 100% 时超出外部边界

Absolute positioned inner content goes beyond the outer boundary on width of 100%

当我将完整 (100%) width 内容即 carousel-indicators (在下面的代码中)放入另一个 divwpr 并删除 padding(设置为0),为什么里面的内容还是超出了外面的div。我可以观察如果我删除内部 divabsolute positioncarousel-indicators ,它会按预期工作。谁能解释一下为什么绝对定位搞砸了?

.wpr {
  padding: 0;
  width: 100%;
}

.wpr-item {
  width: 300px;
  background: pink;
  padding: 10px 30px;
  display: flex;
  justify-content: center;
  margin: 0 auto;
}

.wpr-item .item {
  width: 50px;
  height: 50px;
  background: green;
  float: left;
  margin: 0 5px;
}

.carousel-indicators {
  position: absolute;
  padding: 0;
  text-align: center;
  /*width: 97%;*/
  display: block;
  width: 100%;
}

.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  cursor: pointer;
  background-color: black;
  background-color: rgba(0, 0, 0, 0);
  border: 1px solid black;
  border-radius: 10px;
}

.carousel-indicators .active {
  width: 12px;
  height: 12px;
  margin: 0;
  background-color: black;
}
<div class="wpr">
  <div class="wpr-item">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
  <ol class="carousel-indicators">
    <li class="active"></li>
    <li></li>
    <li></li>
  </ol>
</div>

默认 ol/ul 标签占用一些 margin & padding。您可以删除它以解决您的问题。 & 添加 position: relative;.wpr div。检查下面更新的代码段

.wpr {
  padding: 0;
  width: 100%;
  position: relative;
}

.wpr-item {
  width: 300px;
  background: pink;
  padding: 10px 30px;
  display: flex;
  justify-content: center;
  margin: 0 auto;
}

.wpr-item .item {
  width: 50px;
  height: 50px;
  background: green;
  float: left;
  margin: 0 5px;
}

.carousel-indicators {
  position: absolute;
  padding: 0;
  margin: 0;
  text-align: center;
  /*width: 97%;*/
  display: block;
  width: 100%;
}

.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  cursor: pointer;
  background-color: black;
  background-color: rgba(0, 0, 0, 0);
  border: 1px solid black;
  border-radius: 10px;
}

.carousel-indicators .active {
  width: 12px;
  height: 12px;
  margin: 0;
  background-color: black;
}
<div class="wpr">
  <div class="wpr-item">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
  <ol class="carousel-indicators">
    <li class="active"></li>
    <li></li>
    <li></li>
  </ol>
</div>

您需要向父元素声明 position: relative,在本例中为 .wpr,以便位于 absolute 的元素具有对给定父元素的 relative 引用元素.

.wpr {
  padding: 0;
  width: 100%;
  position: relative;
}

.wpr-item {
  width: 300px;
  background: pink;
  padding: 10px 30px;
  display: flex;
  justify-content: center;
  margin: 0 auto;
}

.wpr-item .item {
  width: 50px;
  height: 50px;
  background: green;
  float: left;
  margin: 0 5px;
}

.carousel-indicators {
  position: absolute;
  padding: 0;
  text-align: center;
  /*width: 97%;*/
  display: block;
  width: 100%;
}

.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  cursor: pointer;
  background-color: black;
  background-color: rgba(0, 0, 0, 0);
  border: 1px solid black;
  border-radius: 10px;
}

.carousel-indicators .active {
  width: 12px;
  height: 12px;
  margin: 0;
  background-color: black;
}
<div class="wpr">
  <div class="wpr-item">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
  <ol class="carousel-indicators">
    <li class="active"></li>
    <li></li>
    <li></li>
  </ol>
</div>