我正在为我的网站前端使用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>
所需的效果看起来像这样,但是我不确定这是否真的可能:
测试容器应从其父列开始的地方开始,但要贪婪。这有可能吗?不过,我没有问题可以在测试容器周围添加更多的div。
答案 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>