html - 修复了溢出视口时模态不会滚动的问题
问题描述
问题
我制作了一个固定模式来显示页面的主要内容。模态框的内容的高度可能最终大于视口,因此需要滚动,但它只是不起作用。
模态内容
在模态中是
- 一个带有灰色背景 的空覆盖/背景,它占据了模态框的整个宽度和高度。
div
- 内容本身的高度可能最终会大于视口。
JS小提琴
这是一个演示问题的 JS Fiddle。我添加了边框颜色以更好地帮助区分各个元素。
解决方案
您需要将此 css 属性添加到modal__content:
position:relative;
overflow:auto;
height:100%;
- z-index 没有被应用,因为位置是静态的,所以你需要添加
position:relative
- 并激活滚动,您需要同时添加和
overflow:auto
固定height
100%
- 不要忘记,您也应该修复
height
模态父 模态100%
的
查看结果:
html,
body {
width: 100%;
}
html {
height: 100%;
}
body {
min-height: 100%;
font-family: consolas;
}
.main {
border: 2px solid blue;
}
.modal {
z-index: 10;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: 2px solid red;
}
.modal__overlay {
z-index: 1;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(138, 138, 138, 0.5);
border: 2px dashed green;
}
.modal__content {
z-index: 2;
border: 2px dotted blue;
position: relative;
overflow: auto;
height: 100%;
}
.simulate-content {
width: 120px;
height: 200px;
margin: 12px auto;
padding: 12px;
text-align: center;
font-weight: bold;
background-color: rgb(255, 50, 50);
}
<body>
<!-- PLACEHOLDER CONTENT -->
<div class='main'>
<h3> BODY CONTENT </h3>
<p>"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."</p>
</div>
<!-- THE MODAL -->
<div class='modal'>
<div class='modal__overlay'></div>
<div class='modal__content'>
<p class='simulate-content'>MODAL CONTENT 1 of 5</p>
<p class='simulate-content'>MODAL CONTENT 2 of 5</p>
<p class='simulate-content'>MODAL CONTENT 3 of 5</p>
<p class='simulate-content'>MODAL CONTENT 4 of 5</p>
<p class='simulate-content'>MODAL CONTENT 5 of 5</p>
</div>
</div>
</body>
推荐阅读
- google-cloud-platform - 删除的默认 Compute Engine 服务帐号会阻止创建 GKE Autopilot 集群
- c# - 如何将相同的值添加到一行中的多个列表中?
- javascript - 如何处理@ionic-react 切换项的变化?
- openid-connect - Azure AD - OIDC(Openid-connect)配置
- opengl - OpenGL glulookat 函数
- r - 如何使用phylogram包转换和根树状图?
- javascript - 如何显示单曲electron.js 中父窗口和子窗口中的内容?
- c++ - 有没有办法在新行上拆分逻辑条件?
- angular - Angular 12:在继续之前等待获取所有数据
- java - JUnit 5 和测试套件