css - 为什么显示:网格改变了元素相互堆叠的方式?
问题描述
我想知道为什么 display:grid 和 display: block 会影响子元素如何相互堆叠?
在我下面的代码中,一个外部容器,两个内部孩子。
.absolute-position
绝对定位,而.container
相对定位。
即使设置z-index: 10000
上.blocked
也无法将其抬起,这与display: block
容器上的不同。
const container = document.querySelector(".container");
function toggle(){
container.classList.toggle("grid");
}
.absolute-position {
position: absolute;
background: white;
top: 10px;
left: 10px;
bottom: 10px;
right: 10px;
}
.grid {
display: grid;
}
.container {
width: 100px;
height: 100px;
background: burlywood;
position: relative;
}
.blocked {
background: #a1c572;
z-index: 10000;
}
<div class="container grid">
<div class="absolute-position"></div>
<div class="blocked">abc</div>
</div>
<button onclick="toggle()">Toggle</button>
解决方案
如果我理解正确,试试这个:
我将此添加到.blocked:
position: sticky;
整个代码:
const container = document.querySelector(".container");
function toggle(){
container.classList.toggle("grid");
}
.absolute-position {
position: absolute;
background: white;
top: 10px;
left: 10px;
bottom: 10px;
right: 10px;
}
.grid {
display: grid;
}
.container {
width: 100px;
height: 100px;
background: burlywood;
position: relative;
}
.blocked {
background: #a1c572;
z-index: 10000;
position: sticky;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container grid">
<div class="absolute-position"></div>
<div class="blocked">abc</div>
</div>
<button onclick="toggle()">Toggle</button>
推荐阅读
- javascript - 如何在数组内动态生成数组?
- jquery - jquery在点击时显示伪元素
- c - 如何使用动态内存分配创建(2d)数组
- angular - 使用查询参数的角度 6 中的路由器链接
- python-3.x - Python - 将值填充到电子表格时出错(使用 xlsxwriter)
- javascript - 如何使用 JS 获得焦点表单元素?
- html - CSS, height 使边框颜色改变
- javascript - 如何在 Application Insights 中处理跟踪的信息
- python - 列表索引在搜索算法中过时了
- angular - 为什么 Angular 会切断字符串?