css 为什么即使父div的overflow-y是auto或visible,子div也会被裁剪

eiee3dmh  于 2023-06-25  发布在  其他
关注(0)|答案(2)|浏览(187)

有一个父div,其位置设置为相对。并且有一个子div具有position absolute。我想把它放在父div的顶部,但它隐藏了父div的overflow-x和overflow-y是自动的。

.container {
  width: 200px;
  height: 200px;
  background-color: gray;
  position: relative;
  z-index: 1;
  overflow-x: auto;
  overflow-y: auto;
}

.popover-container {
  background-color: red;
  width: 100px;
  height: 100px;
  margin: 40px;
}

.popover {
  font-size: 20px;
  background-color: green;
  display: inline-block;
  position: absolute;
  top: -10px;
  z-index: 3;
}
<div class="container">
  <div class="popover-container">
    <div class="popover">Hello</div>
  </div>
</div>

当我将父元素overflow-x和overflow-y都设置为可见时,它就可以工作了。如果我只看《易经》,那就不看《易经》。
我无法将overflow-x设置为visible,它工作正常。
有没有办法在不将overflow-x设置为visible的情况下实现这一点?

zlhcx6iw

zlhcx6iw1#

在这个beautiful blogpost中找到了答案:
我们需要添加一个父div到container中,然后使弹出框的位置相对于这个父级。

.parent-container {
  position: relative;
}

.container {
  width: 200px;
  height: 200px;
  background-color: gray;
  z-index: 1;
  overflow-x: auto;
  overflow-y: auto;
}

.popover-container {
  background-color: red;
  width: 100px;
  height: 100px;
  margin: 40px;
}

.popover {
  font-size: 20px;
  background-color: green;
  display: inline-block;
  position: absolute;
  top: -10px;
  z-index: 3;
}
<div class="parent-container">
  <div class="container">
    <div class="popover-container">
      <div class="popover">Hello</div>
    </div>
  </div>
</div>
xdnvmnnf

xdnvmnnf2#

在我看来,“有效”的是溢出没有设置为auto或没有声明。简单地不声明溢出不起作用吗?
如果您需要更多帮助,请附上所需结果的图像。

.container {
  width: 200px;
  height: 200px;
  background-color: gray;
  position: relative;
  z-index: 1;
  /* overflow-x: auto; */
  /* overflow-y: auto; */
}

.popover-container {
  background-color: red;
  width: 100px;
  height: 100px;
  margin: 40px;
}

.popover {
  font-size: 20px;
  background-color: green;
  display: inline-block;
  position: absolute;
  top: -10px;
  z-index: 3;
}
<div class="container">
  <div class="popover-container">
    <div class="popover">Hello</div>
  </div>
</div>

相关问题