html - 在高度未知的容器上设置垂直滚动

标签 html css flexbox

是否可以使用 flexbox 在未知高度的容器上设置垂直滚动?

我不能使用 max-height,因为它会将高度限制为某个不适合所有屏幕尺寸的数字。

这是我需要的一个简单示例:

<div class="list flex-vertical">
  <header>Some header</header>
  <ul class="flex-vertical">
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
    <li>Item4</li>
    ...
  </ul>
</div>

我只希望 ul 滚动,显然我不知道它的高度。

here is a pen

最佳答案

flex 有一些缺点/错误/缺陷,或者怎么调用它们,并且需要一个内部绝对元素来强制滚动。

html, body{
  height: 100%;
  overflow: hidden;
}
.list{
  display: flex;
  flex-direction: column;
  height: 100%;
}
header {
  flex: 0;
}
.vertical {
  flex: 1;
  position: relative;  
}
.scroll {  
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  overflow: auto;
}
<div class="list flex-vertical">
  <header>Some header</header>
  <div class="vertical">
    <ul class="scroll">
      <li>Item1</li>
      <li>Item2</li>
      <li>Item3</li>
      <li>Item4</li>
      <li>Item5</li>
      <li>Item6</li>
      <li>Item7</li>
      <li>Item8</li>
      <li>Item9</li>
      <li>Item10</li>
      <li>Item11</li>
      <li>Item12</li>
      <li>Item13</li>
      <li>Item14</li>
      <li>Item15</li>
      <li>Item16</li>
      <li>Item17</li>
      <li>Item18</li>
      <li>Item19</li>
      <li>Item20</li>
      <li>Item21</li>
      <li>Item22</li>
      <li>Item23</li>
      <li>Item24</li>
      <li>Item25</li>
      <li>Item26</li>
      <li>Item27</li>
      <li>Item28</li>
    </ul>
  </div>
</div>

关于html - 在高度未知的容器上设置垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549997/

相关文章:

html - 如何在屏幕分辨率发生变化时调整导航栏的内容

html - 使用相对定位定位 div 时,有没有办法使下一个 div "flow"到前一个 div 现在所在的位置?

html - div没有按顺序显示

Javascript检测父元素的子元素是否有类集

javascript - 通过 JavaScript 编辑 CSS 会产生左侧赋值错误

javascript - 是否可以为颜色选择创建一个 jQuery 移动范围 slider ,带有标签、阶梯边框和阶梯背景?

html - 如何在 Flex 容器中定位 –THIS–?

css - 在 `flex-grow: 1` 内垂直居中

css - css flexBox 中的文本溢出只需添加宽度 :0, 即可解决,但为什么呢?

javascript - HTML 标题中的 <br/> 标记破坏了 jQuery DataTables 中的 pdfmake 导出