css - Bootstrap 4.1 flex 50%-high 滚动列表

标签 css twitter-bootstrap flexbox bootstrap-4

尝试创建具有上半部分和下半部分的全屏布局。上半部分应包含一个元素列表,如果超过屏幕高度的一半,则应具有滚动条。

经过一些搜索,我能够使用以下标记获得可行的解决方案:

<div id="app">
  <main role="main" class="container-fluid d-flex">
    <div class="row flex-fill bg-primary" style="min-height:100vh;">
      <div class="col-sm h-100">
        <div class="row h-50 bg-warning" style="overflow:scroll;">
          <div class="col-sm">
            <div>
              <ul class="">
                <li class="">Series 100</li>
                <li class="">Series 200</li>
                <li class="">Series 300</li>
                <li class="">Series 400</li>
                <li class="">Series 500</li>
                <li class="">Series 600</li>
                <li class="">Series 700</li>
                <li class="">Series 800</li>
                <li class="">Series 900</li>
                <li class="">Series 1000</li>
              </ul>
            </div>
          </div>
        </div>
        <div class="row h-50 bg-success">
          <div class="col-sm">
            <div>
              test
            </div>
          </div>
        </div>
      </div>
    </div> 
  </main>
</div>

http://jsfiddle.net/0zbcr7mg/4/ (确保输出窗口缩小到整个列表放不下的程度)

但是,一旦我向列表中添加更多元素,布局就会崩溃 - 列表仍然有一个滚动条,但它占据了输出窗口高度的 50% 以上:

http://jsfiddle.net/0zbcr7mg/3/

无论列表中的元素数量如何,我应该对标记进行哪些更改以保持一致的行为?

最佳答案

您只需将 min-height:100vh 行更改为 height:100vh...

http://jsfiddle.net/tokep2gn/

<div id="app">
    <main role="main" class="container-fluid d-flex">
        <div class="row flex-fill bg-primary" style="height: 100vh;">
            <div class="col-sm h-100">
                <div class="row h-50 bg-warning" style="overflow:scroll;">
                    <div class="col-sm">
                        <div>
                            <ul class="">
                                <li class="">Series 100</li>
                                <li class="">Series 200</li>
                                <li class="">Series 300</li>
                                <li class="">Series 400</li>
                                <li class="">Series 500</li>
                                <li class="">Series 600</li>
                                <li class="">Series 700</li>
                                <li class="">Series 800</li>
                                <li class="">Series 900</li>
                                <li class="">Series 1000</li>
                <li class="">Series 100</li>
                                <li class="">Series 200</li>
                                <li class="">Series 300</li>
                                <li class="">Series 400</li>
                                <li class="">Series 500</li>
                                <li class="">Series 600</li>
                                <li class="">Series 700</li>
                                <li class="">Series 800</li>
                                <li class="">Series 900</li>
                                <li class="">Series 1000</li>
                            </ul>
                        </div>
                    </div>
                </div>
                <div class="row h-50 bg-success">
                    <div class="col-sm">
                        <div>
                            test
                        </div>
                    </div>
                </div>
            </div>
        </div> 
    </main>
</div>

关于css - Bootstrap 4.1 flex 50%-high 滚动列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53161669/

相关文章:

html - 我将如何移动这个 float 的 div?

html - 背景图像未显示在 <div> 容器中

css - 渲染字体成为 Mozilla-Ubuntu 12.04 中的默认字体

twitter-bootstrap - Karma Runner > 在 angular 和 angular-mocks 引发异常之前加载 bootstrap.js

css - 是否可以在两行而不是一行中显示 flexbox 元素?

html - 在固定高度的容器中从上到下然后从左到右浮动 div

css - 带有粘性标题的响应式柔性盒设计

html - 如何使图像网格适合所有屏幕分辨率?

HTML 调整表格高度

html - 如何将 Bootstrap 按钮对齐到 Bootstrap 面板中选择选项的右侧