如何在嵌套的相对容器中定位绝对值?

时间:2019-03-04 13:55:00

标签: html css

我正在为我的网站前端使用Ant Design,这是一个类似Bootstrap的React JS框架,但在这里并没有真正意义,因为这是一个纯CSS问题。

该框架使用相对的行和列。现在,我想用嵌套在其内部深处的绝对元素覆盖父元素。我不想更改行或列的CSS,也不想将绝对容器移到嵌套元素之外。

如果可能,怎么可能?

.row { /* copied from Antd */
  position: relative;
  height: auto;
  margin-right: 0;
  margin-left: 0;
  zoom: 1;
  display: block;
}

.col { /* copied from Antd */
  flex: 0 0 auto;
  float: left;
  position: relative;
  min-height: 1px;
  padding-right: 0;
  padding-left: 0;
}

.test {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: #333;
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div>This line should stay visible.</div>
  <div class="row">
    <div class="col">
      <div>Right below this line it should be darken:
      <div class="row">
        <div class="col">
          <div class="test"></div>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

所需的效果看起来像这样,但是我不确定这是否真的可能:

preview

测试容器应从其父列开始的地方开始,但要贪婪。这有可能吗?不过,我没有问题可以在测试容器周围添加更多的div。

1 个答案:

答案 0 :(得分:1)

使绝对元素足够大,然后将溢出隐藏在所需的位置:

.row {
  /* copied from Antd */
  position: relative;
}

.col {
  /* copied from Antd */
  position: relative;
}

.test {
  position: absolute;
  top: -100vh;
  right: -100vw;
  bottom: -100vh;
  left: -100vw;
  background: rgba(0, 0, 0, 0.8);
  z-index: 2;
}
<div>This line should stay visible.</div>
  <div class="row">
    <div class="col">
      <div>Right below this line it should be darken:
      <div class="row" style="overflow:hidden"> <!-- hide here -->
          dark content here
        <div class="col">
          dark content here
          <div class="test"></div>
        </div>
      </div>
    </div>
  </div>