html - 可滚动 div 内的叠加层未正确显示
问题描述
我有一个可滚动的 div。在这个 div 中,我有一个绝对定位的叠加层。可悲的是,这个叠加层卡在顶部。所以当我向下滚动时,叠加层保持在顶部:
.list {
height: 300px;
width: 300px;
overflow: scroll;
overflow-x: hidden;
font-size: 12px;
position: relative;
border: 2px solid;
}
span {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding: 10px 12px;
height: 33px;
background: red;
}
span:nth-child(2n) {
background: blue;
}
.overlay {
z-index: 1000;
border: none;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: rgb(255, 255, 255);
opacity: 0.8;
cursor: default;
position: absolute;
}
<div class="list">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<div class="overlay"></div>
</div>
当用户按下按钮时,叠加层可见。当他不向下滚动时,一切看起来都很好,但当他这样做时,不要。那么知道如何在整个可滚动的 div 元素上扩展叠加层吗?
解决方案
不是最优雅的,但你可以使用position:sticky
.list {
height: 300px;
width: 300px;
overflow: scroll;
overflow-x: hidden;
font-size: 12px;
position: relative;
border: 2px solid;
}
span {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
padding: 10px 12px;
height: 33px;
background: red;
}
span:nth-child(2n) {
background: blue;
}
.overlay {
z-index: 1000;
border: none;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
top: 0;
left: 0;
background: rgb(255, 255, 255);
opacity: 0.8;
cursor: default;
position: sticky;
}
.content {
margin-top: -100%
}
<div class="list">
<div class="overlay"></div>
<div class="content">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>
</div>
推荐阅读
- php - 避免在替换字符串中找到替换占位符
- angular - 如何在Angular中捕获特定持续时间的开始时间和结束时间?
- swift - SwiftUI - 使用 UUID() 嵌入结构中的结构
- c++ - 使用较小的默认对齐重载新运算符
- python - 如何在 Django 中向博客添加自定义 HTML 元素和图像?
- c - C 通过 UDP 套接字传输文件 (linux)
- rust - 为什么 proc-macros 必须在 proc-macro crate 中定义?
- python-3.x - 我正在使用 asyncio,但异步函数正在使用 await asyncio.sleep(5) 阻塞其他异步函数
- html - 如何将材质图标直接插入vue中的svg元素
- unix - 如何使用 pnmscale 缩放图像的较长边并保持比例?