如何让 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 内