【问题标题】:How to build a 2 Column (Fixed - Fluid) Layout with Twitter Bootstrap?如何使用 Twitter Bootstrap 构建 2 列(固定 - 流体)布局?
【发布时间】:2012-02-03 04:13:01
【问题描述】:

是否可以使用 Twitter Bootstrap (http://twitter.github.com/bootstrap/) 创建 2 列布局(固定 - 流体)布局 (http://www.dynamicdrive.com/style/layouts/item/css-liquid-layout-21-fixed-fluid/)?

你有什么解决办法吗?

【问题讨论】:

  • 侧边栏和内容栏的高度必须相同(最小高度:100%)。
  • 侧边栏将是静态的(用于导航),内容列的高度将是不同的。这意味着它们中的每一个都可能是更长的列。
  • 我使用 jquery 将高度设置为 100%,但我更喜欢 css 解决方案:50.57.127.196/bootstrap/fluid.html(CSS 语法不是很好,正确的空白让我感到困惑)
  • 我在这里缺少什么?这个问题似乎完全有效。 Bootstrap 文档提供了 .container 或 .container-fluid 以及 .row 或 .row-fluid 的类,它们似乎都旨在包装一系列完全固定或完全流动的列。
  • 公认的答案似乎是流动的。这是一个实际上是固定流体的答案:stackoverflow.com/a/9739345/237091

标签: css twitter-bootstrap bootstrap-4 fluid-layout


【解决方案1】:

2018 年更新

引导程序 4

既然 BS4 是 flexbox,fixed-fluid 就很简单了。只需设置固定列的宽度,在流体列上使用.col类即可。

.sidebar {
    width: 180px;
    min-height: 100vh;
}

<div class="row">
    <div class="sidebar p-2">Fixed width</div>
    <div class="col bg-dark text-white pt-2">
        Content
    </div>
</div>

http://www.codeply.com/go/7LzXiPxo6a

引导程序 3..

fixed-fluid 布局的一种方法是使用与 Bootstrap 的断点对齐的媒体查询,以便您仅在较大的屏幕上使用固定宽度的列,然后让布局在较小的屏幕上响应式堆叠。 ..

@media (min-width:768px) {
  #sidebar {
      min-width: 300px;
      max-width: 300px;
  }
  #main {
      width:calc(100% - 300px);
  }
}

Working Bootstrap 3 Fixed-Fluid Demo

相关问答:
Fixed width column with a container-fluid in bootstrap
How to left column fixed and right scrollable in Bootstrap 4, responsive?

【讨论】:

  • 这是完美的解决方案。有没有办法在使浏览器非常小的同时防止列交换?谢谢
  • 只有在内容 div 的宽度“自然”小于 (100% - 300px) 时才有效。就我而言,内容的“自然”大小大于该大小,并导致内容 div 在侧边栏结束后转到该行。 bootstrap 3 解决方案仍然有效,我只是使用宽度而不是最小和最大宽度。
【解决方案2】:

- 另一个更新-

自 Twitter Bootstrap 2.0 版以来 - 删除了 .container-fluid 类 - 仅使用引导类无法实现两列固定流体布局 - 但是我已经更新我的回答是包含一些小的 CSS 更改,这些更改可以在您自己的 CSS 代码中进行,这将使这成为可能

可以使用下面找到的 CSS 和从 Twitter Bootstrap Scaffolding : layouts 文档页面中获取的略微修改的 HTML 代码来实现固定流体结构: p>

HTML

<div class="container-fluid fill">
    <div class="row-fluid">
        <div class="fixed">  <!-- we want this div to be fixed width -->
            ...
        </div>
        <div class="hero-unit filler">  <!-- we have removed spanX class -->
            ...
        </div>
    </div>
</div>

CSS

/* CSS for fixed-fluid layout */

.fixed {
    width: 150px;  /* the fixed width required */
    float: left;
}

.fixed + div {
     margin-left: 150px;  /* must match the fixed width in the .fixed class */
     overflow: hidden;
}


/* CSS to ensure sidebar and content are same height (optional) */

html, body {
    height: 100%;
}

.fill { 
    min-height: 100%;
    position: relative;
}

.filler:after{
    background-color:inherit;
    bottom: 0;
    content: "";
    height: auto;
    min-height: 100%;
    left: 0;
    margin:inherit;
    right: 0;
    position: absolute;
    top: 0;
    width: inherit;
    z-index: -1;  
}

我保留了下面的答案 - 尽管支持 2.0 的编辑使其成为流体 - 流体解决方案 - 因为它解释了使侧边栏和内容高度相同背后的概念(提问者问题的重要部分在 cmets 中确定)


重要

下面的答案是流体-流体

更新 正如@JasonCapriotti 在 cmets 中指出的那样,这个问题的原始答案(为 v1.0 创建)在 Bootstrap 2.0 中不起作用。为此,我更新了答案以支持 Bootstrap 2.0

为确保主要内容至少占屏幕高度的 100%,我们需要将 htmlbody 的高度设置为 100%,并创建一个名为 .fill 的新 css 类,它有一个100% 的最小高度:

html, body {
    height: 100%;
}

.fill { 
    min-height: 100%;
}

然后我们可以将.fill 类添加到我们需要占据 100% 屏幕高度的任何元素。在这种情况下,我们将它添加到第一个 div:

<div class="container-fluid fill">
    ...
</div>

要确保侧边栏和内容列具有相同的高度是非常困难且不必要的。相反,我们可以使用::after 伪选择器添加一个filler 元素,这会产生两列具有相同高度的错觉:

.filler::after {
    background-color: inherit;
    bottom: 0;
    content: "";
    right: 0;
    position: absolute;
    top: 0;
    width: inherit;
    z-index: -1;  
}

为了确保.filler 元素相对于.fill 元素定位,我们需要将position: relative 添加到.fill

.fill { 
    min-height: 100%;
    position: relative;
}

最后在 HTML 中添加 .filler 样式:

HTML

<div class="container-fluid fill">
    <div class="row-fluid">
        <div class="span3">
            ...
        </div>
        <div class="span9 hero-unit filler">
            ...
        </div>
    </div>
</div>

注意事项

  • 如果您需要页面左侧的元素作为填充物,则需要将right: 0 更改为left: 0

【讨论】:

  • 非常感谢!这有很大帮助!正是我想要的!当然赞成:)
  • 我很困惑,我以为你要的是固定流体,而不是流体流体? (25%-75%我认为是Bootstrap的例子)
  • 我只想指出,虽然这段代码当时可能很棒,但它在 Bootstrap 2 中不起作用。
  • 我和@mikemike 一样困惑:这个答案中链接的两个工作示例似乎都是流体流体,而不是固定流体?
  • 是的,这两个例子都是流体-流体,而不是固定-流体。
猜你喜欢
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多