如何让 Bootstrap 列跨越多行?

Posted

技术标签:

【中文标题】如何让 Bootstrap 列跨越多行?【英文标题】:How can I get a Bootstrap column to span multiple rows? 【发布时间】:2013-04-29 17:08:15 【问题描述】:

我正在尝试弄清楚如何使用 Bootstrap 执行以下网格。

我不确定如何创建跨两行的框(编号 1)。这些框是按照它们的布局顺序以编程方式生成的。方框 1 是欢迎信息。

你有什么好的办法吗?

【问题讨论】:

twitter.github.io/bootstrap/scaffolding.html#gridSystem, 你可以嵌套 Bootstrap 网格系统。 那么创建 2 行而不是 3 行,将 2 行嵌套在第一行中?当以编程方式生成框时,这可能会出现问题。 不知道它是否会起作用,但将pull-left 类添加到所有框是否有效?它不会使框 1 的高度与 2 + 4 相同,但它应该允许它在您设置高度时工作。 Hailwood,如果可以的话,把它作为答案,如果不能,我会粘贴我的代码。它工作......至少在 Chrome 上。需要在其他浏览器中测试。 @Hailwood 事实上,不需要向左拉。只需在第一个元素上设置高度即可。 【参考方案1】:

对于 Bootstrap 3:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"/>


<div class="row">
    <div class="col-md-4">
        <div class="well">1
            <br/>
            <br/>
            <br/>
            <br/>
            <br/>
        </div>
    </div>
    <div class="col-md-8">
        <div class="row">
            <div class="col-md-6">
                <div class="well">2</div>
            </div>
            <div class="col-md-6">
                <div class="well">3</div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-6">
                <div class="well">4</div>
            </div>
            <div class="col-md-6">
                <div class="well">5</div>
            </div>
        </div>
    </div>
</div>
<div class="row">
    <div class="col-md-4">
        <div class="well">6</div>
    </div>
    <div class="col-md-4">
        <div class="well">7</div>
    </div>
    <div class="col-md-4">
        <div class="well">8</div>
    </div>
</div>

对于引导程序 2:

<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap.min.css" rel="stylesheet"/>

<div class="row-fluid">
    <div class="span4"><div class="well">1<br/><br/><br/><br/><br/></div></div>
    <div class="span8">
        <div class="row-fluid">
            <div class="span6"><div class="well">2</div></div>
            <div class="span6"><div class="well">3</div></div>
        </div>
        <div class="row-fluid">
            <div class="span6"><div class="well">4</div></div>
            <div class="span6"><div class="well">5</div></div>
        </div>
    </div>
</div>
<div class="row-fluid">
    <div class="span4">
        <div class="well">6</div>
    </div>
    <div class="span4">
        <div class="well">7</div>
    </div>
    <div class="span4">
        <div class="well">8</div>
    </div>
</div>

查看 JSFiddle 上的演示(Bootstrap 2):http://jsfiddle.net/SxcqH/52/

【讨论】:

随着第一个框的增长,您如何让框 4 和框 5 填满行高? ***.com/questions/19695784/… 这个例子不太行,第一列的底边与其余部分略有偏差。 这是一个很好的答案,但如果框 5 也需要扩展到第 3 行,而且还需要动态扩展呢? @Misha'el 这很简单,只需按照他为框 1 所做的操作并将其应用于框 3/5。应该有 3 列大小相同,外侧的仅包含 1 行,内侧的仅包含两行。【参考方案2】:

就像 cmets 建议的那样,解决方案是使用嵌套跨度/行。

<div class="container">
    <div class="row">
        <div class="span4">1</div>
        <div class="span8">
            <div class="row">
                <div class="span4">2</div>
                <div class="span4">3</div>
            </div>
            <div class="row">
                <div class="span4">4</div>
                <div class="span4">5</div>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="span4">6</div>
        <div class="span4">7</div>
        <div class="span4">8</div>
    </div>
</div>

【讨论】:

这比只有代码的答案更好,IMO。【参考方案3】:
<div class="row">
  <div class="col-4 alert alert-primary">
     1
  </div>
  <div class="col-8">
    <div class="row">
      <div class="col-6 alert alert-primary">
        2
      </div>
      <div class="col-6 alert alert-primary">
        3
      </div>
      <div class="col-6 alert alert-primary">
        4
      </div>
      <div class="col-6 alert alert-primary">
        5
      </div>
    </div>
  </div>
</div>
<div class="row">
  <div class="col-4 alert alert-primary">
    6
  </div>
  <div class="col-4 alert alert-primary">
    7
  </div>
  <div class="col-4 alert alert-primary">
    8
  </div>
</div>

【讨论】:

【参考方案4】:

我相信关于如何跨越行的部分已经得到了彻底的回答(即通过嵌套行),但我也遇到了嵌套行没有填充它们的容器的问题。虽然 flexbox 和负边距是一种选择,但更简单的解决方案是在包含框 2、3、4 和 5 的 row 上使用预定义的 h-50 类。

注意: 我正在使用Bootstrap-4,我只是想分享,因为我遇到了 同样的问题,发现这是一个更优雅的解决方案:)

【讨论】:

【参考方案5】:

下面的例子似乎有效。只需在第一个元素上设置高度

<ul class="row">
    <li class="span4" style="height: 100px"><h1>1</h1></li>
    <li class="span4"><h1>2</h1></li>
    <li class="span4"><h1>3</h1></li>
    <li class="span4"><h1>4</h1></li>
    <li class="span4"><h1>5</h1></li>
    <li class="span4"><h1>6</h1></li>
    <li class="span4"><h1>7</h1></li>
    <li class="span4"><h1>8</h1></li>
</ul>

我不禁认为这是对 row 的错误使用。

【讨论】:

以上是关于如何让 Bootstrap 列跨越多行?的主要内容,如果未能解决你的问题,请参考以下文章

如何让 UIlabel 动态地自动跨越多行。在具有多个 UIlabels 的 Tableview 单元格/ContentView 内

Bootstrap 网格列高 100%

如何在VS代码中将单行跨越成多行?

如何构建一个表格标题而不是跨越 HTML 中的多行?

如何在 Bootstrap 中获取跨越父级全宽的按钮组?

Bootstrap 4网格系统错误[重复]