【问题标题】:Fixed height scrollable div inside of a bootstrap 3 column固定高度可滚动的 div 在 bootstrap 3 列内
【发布时间】:2016-01-11 18:51:27
【问题描述】:

我看到过类似的问题,但与我正在尝试的完全不同。大多数示例使整个 col-md-2 滚动,我需要其中的内容才能滚动。

在一个流体容器内,我有一个左侧导航类型列和一个右侧内容列。

在左列中,我希望顶部 class="top" 有一个 div,底部 class="bottom" 有一个 div。在中间我有一个清单。说底部和顶部是 100px。我希望列表占据两者之间的所有空间,如果列表内容大于这个区域,我希望它滚动。如果列表内容小于两者之间的空间,我希望它占据所有空间(而不是折叠)。

这是一个伪例子:

<div class="container-fluid">
    <div class="row">
         <div class="col-md-2">

            <div class="top">
                . . .
            </div>

            <div class="scroll-area">
                <ul>
                    <li>one</li>
                    . . .
                    <li>one-thousand</li>
                </ul>
            </div>

            <div class="bottom">
                . . .
            </div>

         </div> 
         <div class="col-md-10 content">
         </div>
    </div>
  </div>

  <style>
   .top, .bottom { height: 100px; }
  </style>

我以前可以通过提供“滚动区域”绝对定位来做到这一点而无需引导。我可以使滚动区域以固定位置工作,但包含的“col-md-2”已折叠,因此“底部”位于顶部。

我怎样才能做到这一点?

【问题讨论】:

  • 左边的宽度是多少,你想用Flexbox吗?
  • 宽度应该填充包含引导列的 100%,现在 col-md-2 是 col-md-2 宽度:16.66666667%;。因此,如果我将其更改为 col-md-3(宽度:25%),则内容应该填充它。我认为 flexbox 可以。
  • 左边有position: fixed;
  • 否定的。我在我的问题中谈到了在“滚动区域”中尝试。

标签: html css twitter-bootstrap-3


【解决方案1】:

此答案适用于您不知道窗口高度的情况。

你仍然可以使用 position:absolute; 你只需告诉蓝色和红色部分占据顶部和底部, 绿色部分应该有前 100px,然后你只需使用 css 'calc' 来获取它的高度。

样式

.side{
  position:fixed;
  top:0;
  left:0;
  height:100%;
  padding:0;
}

.scroll-area{
  width:100%;
  height:calc(100% - 200px);
  margin-top:100px;
  background-color:green;
  float:left;
  overflow-y:scroll;
}

html

<div class="row">
       <div class="col-md-2 col-xs-2 side">
          <div style="position:relative;width:100%;height:100%;">
            <div class="top" style="background-color:red;top:0;width:100%;height: 100px; position:absolute;">
                top
            </div>

            <div class="scroll-area">
                <ul>
                    <li>one</li>
                </ul>
                <div style="width:100%;height:10000px;">
                </div>
                <ul>
                    <li>one-thousand</li>
                </ul>
            </div>

            <div class="bottom" style="background-color:blue;bottom:0;width:100%;height: 100px; position:absolute;">
                bottom
            </div>
          </div>

       </div> 
       <div class="col-md-10 col-xs-offset-2 content col-md-offset-2">
         <div style="height:1000px;width:100%;">

         </div>
       </div>
  </div>

看看这个文件 -

https://jsfiddle.net/jxo6pmju/12/

【讨论】:

  • 您能解释一下为什么要使用 relative 和 fixed 吗?
  • 我希望侧栏忽略行高并拥有 100% 的屏幕高度。然后我在里面使用了相对,所以我可以在里面使用绝对元素。这不适合你吗?
  • 内容窗格向左折叠。我正在使用容器流体,我将其添加到问题中。但是我将其添加到您的示例中并且有效。仍在尝试将其纳入我的解决方案。
  • 如果你不想要固定/绝对的项目,那么问题在于“行”div,你将不得不将其高度设置为 100%。但是会限制你的页面。这将是错误的......你能补充一下你到目前为止得到的东西吗?
  • 感谢您的提琴。似乎你做对了,你唯一需要的,是因为这个 jsfiddle 屏幕宽度很小,你应该使用 col-sm-2 这样侧面 div 将获得正确的宽度。但是因为它是固定的,带有内容的 div 向左浮动,我忽略了它。因此,您需要将 col-sm-offset-2 类添加到主要内容 div。这样,它将在其左侧间隔 2 列,并完成 12 列网格。小提琴-jsfiddle.net/Lsx1mfku/3
【解决方案2】:

在这里,我为您遇到的问题添加了小提琴链接,使用 . 希望这会有所帮助`

<div class="fixed">
  <b>Fixed Content</b>
  <br/>
  <br/>
  <p>top</p>
</div>
<div class="scrollit">
  <b>Scroll Content</b>
  <br/>
  <br/>
  <ul>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
    <li>item</li>
  </ul>


</div>
<div class="fixed">
  <b>Fixed Content</b>
  <br/>
  <br/> bottom
</div>

scrollable middle section

【讨论】:

  • 感谢您的回答,虽然您的回答还可以,但如果您解释一下您所做的更改以使其发挥作用,它将对 OP 更有帮助。
  • 你好,中间部分不能是静态高度。
猜你喜欢
  • 1970-01-01
  • 2014-01-13
  • 2013-11-09
  • 1970-01-01
  • 2011-07-30
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多