防止内容在 flexbox 模态中溢出超出滚动范围

Posted

技术标签:

【中文标题】防止内容在 flexbox 模态中溢出超出滚动范围【英文标题】:Preventing content from overflowing beyond scroll in a flexbox modal 【发布时间】:2020-01-08 14:51:16 【问题描述】:

我使用 flexbox 创建了一个模态框,它适用于小型模态框。我遇到的问题是,如果模态的内容高度太高,它将裁剪模态并且您无法滚动到它的顶部或底部。下面是一个 JS Fiddle 来说明这一点,要点是:

模态容器是固定的位置,可以弯曲并居中我有对齐项目的内容:中心,对齐内容中心。 overflow-y 设置为滚动。 我已将模态内容设置为 2000 像素的高度,以说明您无法滚动到文本。
.modal-container
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: #000000aa;

  display: flex;
  justify-content: center;
  align-items: center;
  overflow-y: scroll;


.modal
  background-color: white;
  width: 200px;


.modal-content
  height: 2000px;

https://jsfiddle.net/evrw81o3/

如何让内容显示在滚动边界内?

【问题讨论】:

【参考方案1】:

您需要将margin: auto 添加到您的.modal 类中。见https://jsfiddle.net/89ja04v6/

.modal
  background-color: white;
  width: 200px;
  margin: auto 0;

文本未显示的原因是模式的内容与屏幕顶部重叠,而不是从顶部开始(因为自然会出现非伸缩项)。你可以在这里阅读更多关于flexmargin: auto的信息:https://hackernoon.com/flexbox-s-best-kept-secret-bd3d892826b6

【讨论】:

以上是关于防止内容在 flexbox 模态中溢出超出滚动范围的主要内容,如果未能解决你的问题,请参考以下文章

引导模式打开时如何防止滚动正文内容

【Flutter】图片、内容、滚动空间溢出调整

内容溢出

Flexbox 溢出滚动条显示在正文而不是内部元素上

如何用css控制浏览器滚动条

如何用css控制浏览器滚动条