Bootstrap 4 现在默认使用 flexbox,因此您可以直接获得其神奇的功能。请查看自动布局列,它们根据嵌套的列数动态调整宽度。
以下是一个示例:
<div class="row">
<div class="col">
1 of 5
</div>
<div class="col">
2 of 5
</div>
<div class="col">
3 of 5
</div>
<div class="col">
4 of 5
</div>
<div class="col">
5 of 5
</div>
</div>
这里提供了一个采用Twitter Bootstrap制作的全宽度5列布局。
这是迄今为止最先进的解决方案,因为它可以与Bootstrap 3完美配合。您可以重复使用此类,与当前的Bootstrap响应设计类一起使用。
CSS:
将此代码添加到全局样式表中,甚至可以添加到您的bootstrap.css
文档底部。
.col-xs-5ths,
.col-sm-5ths,
.col-md-5ths,
.col-lg-5ths {
position: relative;
min-height: 1px;
padding-right: 15px;
padding-left: 15px;
}
.col-xs-5ths {
width: 20%;
float: left;
}
@media (min-width: 768px) {
.col-sm-5ths {
width: 20%;
float: left;
}
}
@media (min-width: 992px) {
.col-md-5ths {
width: 20%;
float: left;
}
}
@media (min-width: 1200px) {
.col-lg-5ths {
width: 20%;
float: left;
}
}
投入使用!
例如,如果您想创建一个在中等屏幕上表现为五列布局,在较小的屏幕上表现为两列的div元素,您只需要使用类似以下的内容:
<div class="row">
<div class="col-md-5ths col-xs-6">
...
</div>
</div>
工作演示 - 扩展框架以查看列变得响应。
另一个演示 - 将新的col-*-5ths
类与其他类(如col-*-3
和col-*-2
)结合使用。 调整框架大小以查看它们在响应视图中全部更改为col-xs-6
。
col-*-15
可能会令人困惑。这似乎暗示它们是 15 列网格系统的一部分,但实际上并不是。 - Paul D. Waiteposition:relative; min-height: 1px; padding-right: 15px; padding-left: 15px;
。基本上,我发布的代码只是在这个基础上进行扩展,以便它们完全匹配 Bootstrap 的内置样式。然后我将宽度应用为 20%
,以便页面上可以容纳5个相等的列。非常简单 :) - Fizzix<div class="row-fluid">
<div class="span2 offset1"></div>
<div class="span2"></div>
<div class="span2"></div>
<div class="span2"></div>
<div class="span2"></div>
</div>
看这里!五个等间距且居中的列。
在Bootstrap 3.0中,这段代码如下:
<div class="row">
<div class="col-md-2 col-md-offset-1"></div>
<div class="col-md-2"></div>
<div class="col-md-2"></div>
<div class="col-md-2"></div>
<div class="col-md-2"></div>
</div>
由于bootstrap 4.0默认使用Flexbox布局:
<div class="row">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
LESS
、SASS
或类似的东西,你只需要使用Bootstrap的混合函数:make-md-column
,make-sm-column
等即可。详见Bootstrap的混合函数文档。.col-lg-2-4{
.make-lg-column(2.4)
}
.col-md-2-4{
.make-md-column(2.4)
}
.col-sm-2-4{
.make-sm-column(2.4)
}
.col-lg-2-4{
@include make-lg-column(2.4)
}
.col-md-2-4{
@include make-md-column(2.4)
}
.col-sm-2-4{
@include make-sm-column(2.4)
}
使用这些mixin不仅可以构建真正的全宽bootstrap列类,还可以构建所有相关的帮助类,如.col-md-push-*
、.col-md-pull-*
和.col-md-offset-*
:
LESS:
.col-md-push-2-4{
.make-md-column-push(2.4)
}
.col-md-pull-2-4{
.make-md-column-pull(2.4)
}
.col-md-offset-2-4{
.make-md-column-offset(2.4)
}
.col-md-push-2-4{
@include make-md-column-push(2.4)
}
.col-md-pull-2-4{
@include make-md-column-pull(2.4)
}
.col-md-offset-2-4{
@include make-md-column-offset(2.4)
}
其他答案讨论设置@gridColumns
,这是完全有效的,但这会改变所有bootstrap的核心列宽度。使用上述mixin函数将在默认的bootstrap列上添加5列布局,因此不会破坏任何第三方工具或现有样式。
2.4
是12
的五分之一(2.4*5=12
),适用于Bootstrap 3中的12列网格。也适用于make-xs
,make-sm
,但与其他标准的列定义组合使用时将不起作用(最新的优先)。 - SherbrowBootstrap 5 +(更新至2023年)
Bootstrap 5现在有row-cols-*
类,可以轻松获得5列...
<div class="row row-cols-5">
<div class="col"> </div>
<div class="col"> </div>
<div class="col"> </div>
<div class="col"> </div>
...
</div>
Bootstrap 4.1+(2019年更新)
这里使用auto-layout grid,没有额外的CSS或SASS,有5个等宽的全屏列:
<div class="container-fluid">
<div class="row">
<div class="col">1</div>
<div class="col">2</div>
<div class="col">3</div>
<div class="col">4</div>
<div class="col">5</div>
</div>
</div>
http://codeply.com/go/MJTglTsq9h
这个解决方案有效是因为Bootstrap 4现在采用了flexbox布局。你可以通过在每5列之间插入一个断点,比如使用<div class="col-12"></div>
或<div class="w-100"></div>
,让这5列在同一个.row
中换行。flex-nowrap
添加到 .row
中,因为(自动)列可能会超出父元素的宽度。 - Luuk Skeur<div class="col-sm-12"></div>
会使它们在较大的屏幕尺寸下显示为5个项目,但在较小的尺寸下显示为普通列表。 - Eliezer Berlin以下是@machineaddict和@Mafnah的解答的组合,已经针对Bootstrap 3重新编写(到目前为止在我的项目中表现良好):
@media (min-width: 768px){
.fivecolumns .col-md-2, .fivecolumns .col-sm-2, .fivecolumns .col-lg-2 {
width: 20%;
*width: 20%;
}
}
@media (min-width: 1200px) {
.fivecolumns .col-md-2, .fivecolumns .col-sm-2, .fivecolumns .col-lg-2 {
width: 20%;
*width: 20%;
}
}
@media (min-width: 768px) and (max-width: 979px) {
.fivecolumns .col-md-2, .fivecolumns .col-sm-2, .fivecolumns .col-lg-2 {
width: 20%;
*width: 20%;
}
}
保留原始的Bootstrap 12列布局,不要自定义。唯一需要进行的修改是在原始Bootstrap响应式CSS之后添加一些CSS,例如:
以下代码已经针对Bootstrap 2.3.2进行了测试:
<style type="text/css">
/* start of modification for 5 columns */
@media (min-width: 768px){
.fivecolumns .span2 {
width: 18.297872340425532%;
*width: 18.2234042553191494%;
}
}
@media (min-width: 1200px) {
.fivecolumns .span2 {
width: 17.9487179487179488%;
*width: 17.87424986361156592%;
}
}
@media (min-width: 768px) and (max-width: 979px) {
.fivecolumns .span2 {
width: 17.79005524861878448%;
*width: 17.7155871635124022%;
}
}
/* end of modification for 5 columns */
</style>
并且HTML:
<div class="row-fluid fivecolumns">
<div class="span2">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details »</a></p>
</div>
<div class="span2">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details »</a></p>
</div>
<div class="span2">
<h2>Heading</h2>
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn" href="#">View details »</a></p>
</div>
<div class="span2">
<h2>Heading</h2>
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn" href="#">View details »</a></p>
</div>
<div class="span2">
<h2>Heading</h2>
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn" href="#">View details »</a></p>
</div>
</div>
注意:虽然乘以5的结果不等于12列,但你可以理解其中的意义 :)
这里有一个可工作的示例http://jsfiddle.net/v3Uy5/6/
如果您不需要完全相同的列宽,可以尝试使用嵌套创建5列:
<div class="container">
<div class="row">
<div class="col-xs-5">
<div class="row">
<div class="col-xs-6 column">Column 1</div>
<div class="col-xs-6 column">Column 2</div>
</div>
</div>
<div class="col-xs-7">
<div class="row">
<div class="col-xs-4 column">Column 3</div>
<div class="col-xs-4 column">Column 4</div>
<div class="col-xs-4 column">Column 5</div>
</div>
</div>
</div>
</div>
前两列的宽度将等于5/12 * 1/2约为20.83%
后三列的宽度将等于7/12 * 1/3约为19.44%
这种技巧在许多情况下都能得到可接受的结果,而且不需要任何CSS更改(我们只使用了原生的Bootstrap类)。
前往 Bootstrap 2.3.2 (或者 Bootstrap 3) 自定义页面并设置以下变量(不要输入分号):
@gridColumns: 5;
@gridColumnWidth: 172px;
@gridColumnWidth1200: 210px;
@gridColumnWidth768: 128px;
@gridGutterWidth768: 21px;
下载你的构建版本。这个网格将适应默认容器,保留默认的间距宽度(几乎一致)。
注意:如果您正在使用LESS,请更新variables.less
。
.flexrow {
display: flex;
background: lightgray; /*for debug*/
}
.flexrow > * {
flex: 1;
margin: 1em;
outline: auto green;
}
<div class="flexrow">
<div>...</div>
<div>...</div>
<div>...</div>
<div>...<br>..</div>
<div>...</div>
</div>
<div class="col-sm-2 col-sm-offset-1"></div>
<div class="col-sm-2"></div>
<div class="col-sm-2"></div>
<div class="col-sm-2"></div>
<div class="col-sm-2"></div>